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

Khớp phần tử trong mảng MongoDB

Sử dụng $or kết hợp limit(1) để tìm tài liệu có ít nhất một phần tử mảng khớp điều kiện.

Tạo collection

> db.matchElementInArrayDemo.insertOne({
    "StudentName": "Chris",
    "StudentOtherDetails": [
        { "StudentCountryName": "US", "StudentSkills": "MongoDB" },
        { "StudentCountryName": "UK", "StudentSkills": "Java" }
    ]
});
{ "acknowledged": true, "insertedId": ObjectId("5cd423282cba06f46efe9ee2") }
> db.matchElementInArrayDemo.insertOne({
    "StudentName": "Chris",
    "StudentOtherDetails": [
        { "StudentCountryName": "AUS", "StudentSkills": "PHP" },
        { "StudentCountryName": "US", "StudentSkills": "MongoDB" }
    ]
});
{ "acknowledged": true, "insertedId": ObjectId("5cd423412cba06f46efe9ee3") }

Hiển thị tất cả

> db.matchElementInArrayDemo.find().pretty();

Tìm tài liệu có StudentCountryName = "US" HOẶC StudentSkills = "MongoDB" (giới hạn 1)

> db.matchElementInArrayDemo.find({
    $or: [
        { "StudentOtherDetails.StudentCountryName": "US" },
        { "StudentOtherDetails.StudentSkills": "MongoDB" }
    ]
}).limit(1);

Kết quả (tài liệu đầu tiên khớp):

{
    "_id": ObjectId("5cd423282cba06f46efe9ee2"),
    "StudentName": "Chris",
    "StudentOtherDetails": [
        { "StudentCountryName": "US", "StudentSkills": "MongoDB" },
        { "StudentCountryName": "UK", "StudentSkills": "Java" }
    ]
}

Lưu ý: Truy vấn mảng với dot notation khớp nếu ít nhất một phần tử thỏa mãn. $or ở đây kết hợp hai điều kiện trên cùng một mảng.