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

MongoDB: ตรวจสอบความมีอยู่ของเอกสาร/เอกสารซ้อนด้วย $exists

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