การจับคู่อาร์เรย์ที่ต้องมี ทุกค่า ที่ระบุ ใช้โอเปอเรเตอร์ $all
> db.demo668.createIndex({"ListOfSubject": 1});
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
> db.demo668.insert({"ListOfSubject": ["MySQL", "Java", "C"]});
WriteResult({ "nInserted" : 1 })
> db.demo668.insert({"ListOfSubject": ["MongoDB", "Python", "C++"]});
WriteResult({ "nInserted" : 1 })
> db.demo668.insert({"ListOfSubject": ["C#", "Spring", "Hibernate", "MongoDB"]});
WriteResult({ "nInserted" : 1 })
แสดงข้อมูล:
> db.demo668.find();
คิวรีค้นหาที่มีทั้ง "MongoDB" และ "C++"
> db.demo668.find({"ListOfSubject": {$all: ["MongoDB", "C++"]}});ผลลัพธ์ - ได้เฉพาะเอกสารที่ 2 (มีทั้งคู่):
$all vs $in
| Operator | Logic | Example Match |
|---|---|---|
$in: [A, B] | OR | มี A หรือ B (หรือทั้งคู่) |
$all: [A, B] | AND | ต้องมี A และ B ทั้งคู่ |