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

จะค้นหาบันทึกที่ฟิลด์เป็นโมฆะหรือไม่ได้ตั้งค่าใน MongoDB ได้อย่างไร


ให้เราแก้ไขสองกรณี -

กรณีที่ 1 − ไวยากรณ์จะเป็นดังนี้เมื่อฟิลด์มีอยู่และตั้งค่าเป็น null

db.yourCollectionName.count({yourFieldName: null});

กรณีที่ 1 − ไวยากรณ์จะเป็นดังนี้เมื่อฟิลด์ไม่มีอยู่และไม่ได้ตั้งค่า

db.yourCollectionName.count({yourFieldName: {$exists: false}});

เพื่อให้เข้าใจไวยากรณ์ทั้งสองข้างต้น ให้เราสร้างคอลเลกชันด้วยเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้ -

> db.fieldIsNullOrNotSetDemo.insertOne({"EmployeeName":"Larry","EmployeeAge":null,"EmployeeSalary":18500});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a995c6cea1f28b7aa07fe")
}
> db.fieldIsNullOrNotSetDemo.insertOne({"EmployeeName":"Bob","EmployeeAge":21,"EmployeeSalary":23500});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a99836cea1f28b7aa07ff")
}

> db.fieldIsNullOrNotSetDemo.insertOne({"EmployeeName":"Carol","EmployeeSalary":45500});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a999b6cea1f28b7aa0800")
}
> db.fieldIsNullOrNotSetDemo.insertOne({"EmployeeName":"Mike","EmployeeAge":null,"EmployeeSalary":45500});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a99bb6cea1f28b7aa0801")
}
> db.fieldIsNullOrNotSetDemo.insertOne({"EmployeeName":"Ramit","EmployeeSalary":85500});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a99d76cea1f28b7aa0802")
}

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังต่อไปนี้ −

> db.fieldIsNullOrNotSetDemo.find().pretty();

ต่อไปนี้เป็นผลลัพธ์ -

{
   "_id" : ObjectId("5c8a995c6cea1f28b7aa07fe"),
   "EmployeeName" : "Larry",
   "EmployeeAge" : null,
   "EmployeeSalary" : 18500
}
{
   "_id" : ObjectId("5c8a99836cea1f28b7aa07ff"),
   "EmployeeName" : "Bob",
   "EmployeeAge" : 21,
   "EmployeeSalary" : 23500
}
{
   "_id" : ObjectId("5c8a999b6cea1f28b7aa0800"),
   "EmployeeName" : "Carol",
   "EmployeeSalary" : 45500
}
{
   "_id" : ObjectId("5c8a99bb6cea1f28b7aa0801"),
   "EmployeeName" : "Mike",
   "EmployeeAge" : null,
   "EmployeeSalary" : 45500
}
{
   "_id" : ObjectId("5c8a99d76cea1f28b7aa0802"),
   "EmployeeName" : "Ramit",
   "EmployeeSalary" : 85500
}

กรณีที่ 1

มีฟิลด์ EmployeeAge และตั้งค่าเป็น null

แบบสอบถามมีดังต่อไปนี้ −

> db.fieldIsNullOrNotSetDemo.count({EmployeeAge: null});

ต่อไปนี้เป็นผลลัพธ์ -

4

กรณีที่ 2

ฟิลด์ 'EmployeeAge' ไม่มีอยู่และไม่ได้ตั้งค่าไว้ แบบสอบถามมีดังต่อไปนี้ −

> db.fieldIsNullOrNotSetDemo.count({EmployeeAge: {$exists: false}});

ต่อไปนี้เป็นผลลัพธ์ -

2