ใช้โอเปอเรเตอร์ $all เพื่อค้นหาเอกสารที่มีทุกค่าที่ระบุในอาร์เรย์ ให้สร้างคอลเลกชันตัวอย่าง:
> db.demo17.insertOne({"ListOfSubject":["MySQL","MongoDB","Java"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e13847255d0fc6657d21f0a") }
> db.demo17.insertOne({"ListOfSubject":["C","Python","Java"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e13847e55d0fc6657d21f0b") }
> db.demo17.insertOne({"ListOfSubject":["C++","MongoDB","PL/SQL"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e13849255d0fc6657d21f0c") }
แสดงข้อมูลทั้งหมด:
> db.demo17.find();
ผลลัพธ์:
{ "_id" : ObjectId("5e13847255d0fc6657d21f0a"), "ListOfSubject" : [ "MySQL", "MongoDB", "Java" ] }
{ "_id" : ObjectId("5e13847e55d0fc6657d21f0b"), "ListOfSubject" : [ "C", "Python", "Java" ] }
{ "_id" : ObjectId("5e13849255d0fc6657d21f0c"), "ListOfSubject" : [ "C++", "MongoDB", "PL/SQL" ] }
คิวรีค้นหาเอกสารที่มีรายวิชาครบทุกอย่าง: C++, PL/SQL, และ MongoDB:
> db.demo17.find({"ListOfSubject": { "$all": ["C++","PL/SQL","MongoDB"] } });
ผลลัพธ์ (ได้เฉพาะเอกสารที่ 3):
{ "_id" : ObjectId("5e13849255d0fc6657d21f0c"), "ListOfSubject" : [ "C++", "MongoDB", "PL/SQL" ] }
คำอธิบาย
$allตรวจสอบว่าอาร์เรย์ในฟิลด์นั้นมีสมาชิกครบทุกตัวที่ระบุในอาร์เรย์เงื่อนไข- ลำดับของสมาชิกในอาร์เรย์ไม่สำคัญ
- ต่างจาก
$inที่หาแค่ตัวใดตัวหนึ่ง (OR) แล้ว $all เป็น AND condition