ใช้โอเปอเรเตอร์ $exists เพื่อตรวจสอบว่าฟิลด์หรือฟิลด์ใน embedded document มีอยู่จริงหรือไม่ สร้างคอลเลกชันตัวอย่าง:
> db.demo322.insertOne({'id':1001, 'details':[{'Score':10000,Name:"Bob"},{'Score':98000,Name:"Sam"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5113e2f8647eb59e56206c") }
> db.demo322.insertOne({'id':10002, 'details':[{'Score':9000},{'Score':91000}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5113faf8647eb59e56206d") }
แสดงข้อมูล (เอกสารแรกมี Name ใน details, เอกสารที่สองไม่มี):
> db.demo322.find();
ตรวจสอบว่ามีเอกสารที่มีฟิลด์ Name ในอาร์เรย์ details หรือไม่:
> db.demo322.find({"details.Name":{$exists:true}}).count() > 0;
ผลลัพธ์:
True
รายละเอียด $exists
{ field: { $exists: true } }: ฟิลด์มีอยู่ (รวมถึงค่า null){ field: { $exists: false } }: ฟิลด์ไม่มีอยู่เลย- ต่างจาก
{ field: null }ที่จับคู่ทั้งฟิลด์ไม่มี และฟิลด์มีค่า null - ใช้กับฟิลด์ใน embedded document ได้:
{"details.Name": {$exists: true}} - ในตัวอย่าง ใช้
.count() > 0เพื่อคืนค่า boolean