เมื่อต้องการค้นหาเอกสารที่อาร์เรย์ประกอบด้วยออบเจ็กต์ที่ตรงกับเงื่อนไขหลายค่า ให้ใช้ $all ร่วมกับ dot notation
ตัวอย่างข้อมูลทดสอบ
> db.demo25.insertOne({
"Details":[
{"UserId":"Carol101","UserName":"Carol"},
{"UserId":"David102","UserName":"David"}
]
});
> db.demo25.insertOne({
"Details":[
{"UserId":"Chris101","UserName":"Chris"},
{"UserId":"Mike102","UserName":"Mike"}
]
});
แสดงข้อมูลทั้งหมด
> db.demo25.find();
{
"_id" : ObjectId("5e14c86e22d07d3b95082e77"),
"Details" : [
{"UserId" : "Carol101", "UserName" : "Carol"},
{"UserId" : "David102", "UserName" : "David"}
]
}
{
"_id" : ObjectId("5e14c86f22d07d3b95082e78"),
"Details" : [
{"UserId" : "Chris101", "UserName" : "Chris"},
{"UserId" : "Mike102", "UserName" : "Mike"}
]
}
คิวรี่ค้นหาเอกสารที่มี UserId ทั้ง "Carol101" และ "David102"
> db.demo25.findOne({
"Details.UserId": {$all : ["Carol101","David102"]}
});
ผลลัพธ์
{
"_id" : ObjectId("5e14c86e22d07d3b95082e77"),
"Details" : [
{"UserId" : "Carol101", "UserName" : "Carol"},
{"UserId" : "David102", "UserName" : "David"}
]
}
คำอธิบาย: $all จะค้นหาเอกสารที่อาร์เรย์ Details มีออบเจ็กต์ที่ UserId ครอบคลุมค่าทั้งสองที่ระบุ (ไม่จำเป็นต้องเป็นออบเจ็กต์เดียวกัน)