Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tìm kiếm văn bản trong mảng lồng kép (double nested array) MongoDB

Để truy vấn trong mảng lồng 2 cấp (double nested array), sử dụng dot notation để chỉ định đường dẫn đến trường mục tiêu.

Ví dụ: Collection doubleNestedArrayDemo:

> db.doubleNestedArrayDemo.insertOne({
    "StudentId": "1000", "StudentName": "Larry",
    "StudentDetails": [{
        "ProjectName": "Online Banking",
        "ProjectDetails": [
            { "TechnologyUsed": "Java" },
            { "TechnologyUsed": "MySQL in Backend" }
        ]
    }]
});
> db.doubleNestedArrayDemo.insertOne({
    "StudentId": "1001", "StudentName": "Robert",
    "StudentDetails": [{
        "ProjectName": "Student Web Tracker",
        "ProjectDetails": [
            { "TechnologyUsed": "Django Framework" },
            { "TechnologyUsed": "MongoDB in Backend" }
        ]
    }]
});

Tìm tài liệu có TechnologyUsed = "Java" (đường dẫn: StudentDetails.ProjectDetails.TechnologyUsed):

> db.doubleNestedArrayDemo.find({
    "StudentDetails.ProjectDetails.TechnologyUsed": "Java"
}).pretty();

Kết quả: Trả về tài liệu của Larry (chứa "Java" trong ProjectDetails).

Giải thích: MongoDB tự động "drill down" qua các mảng khi dùng dot notation trong query. Nó khớp nếu bất kỳ phần tử nào trong mảng lồng nhau thỏa mãn điều kiện.

Lưu ý: Để trả về chỉ phần tử khớp thay vì toàn bộ tài liệu, cần dùng Aggregation với $unwind (2 lần) + $match.