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

คิวรี MongoDB ค้นหาเอกสารที่ไม่มีฟิลด์เฉพาะ

ใช้ตัวดำเนินการ $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