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.