Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

กรองเอกสารใน MongoDB เมื่อคีย์ทั้งหมดมีอยู่เป็นฟิลด์

ใช้โอเปอเรเตอร์ $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