ใช้ตัวดำเนินการ $exists: false เพื่อค้นหาเอกสารที่ไม่มีฟิลด์ที่ระบุ
ตัวอย่างข้อมูลทดสอบ (บางเอกสารมีฟิลด์ Age บางเอกสารไม่มี)
> db.demo234.insertOne({"FirstName": "Chris", "LastName": "Brown", "Age": 24});
{ "acknowledged": true, "insertedId": ObjectId("5e418a50f4cebbeaebec5148") }
> db.demo234.insertOne({"FirstName": "David", "LastName": "Miller"});
{ "acknowledged": true, "insertedId": ObjectId("5e418a5ff4cebbeaebec5149") }
> db.demo234.insertOne({"FirstName": "John", "LastName": "Smith", "Age": 34});
{ "acknowledged": true, "insertedId": ObjectId("5e418a70f4cebbeaebec514a") }
แสดงข้อมูลทั้งหมด
> db.demo234.find();
ผลลัพธ์
{
"_id": ObjectId("5e418a50f4cebbeaebec5148"),
"FirstName": "Chris",
"LastName": "Brown",
"Age": 24
}
{
"_id": ObjectId("5e418a5ff4cebbeaebec5149"),
"FirstName": "David",
"LastName": "Miller"
}
{
"_id": ObjectId("5e418a70f4cebbeaebec514a"),
"FirstName": "John",
"LastName": "Smith",
"Age": 34
}
ค้นหาเอกสารที่ไม่มีฟิลด์ Age
> var iterator = db.demo234.find({"Age": {$exists: false}}, {"_id": 0});
> iterator.forEach(function(d) { printjson(d); })
ผลลัพธ์ (เฉพาะเอกสารที่ไม่มี Age)
{
"FirstName": "David",
"LastName": "Miller"
}
สรุป: ใช้ { fieldName: { $exists: false } } ในเงื่อนไข find() เพื่อค้นหาเอกสารที่ขาดฟิลด์ที่ระบุ สามารถรวมกับ Projection { "_id": 0 } เพื่อซ่อน _id