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

Query Document ที่ Field เป็น Null หรือไม่มี Field ใน MongoDB

กรณี 2 กรณีของ Field ที่เป็น Null หรือไม่มี

กรณีที่ 1: Field มีอยู่แต่เป็นค่า Null

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

กรณีที่ 2: Field ไม่มีอยู่จริง (Not Exist)

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") }

แสดงข้อมูลทั้งหมด

> 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 }

ผลลัพธ์การ Query

กรณีที่ 1 - Field มีอยู่และเป็น Null:

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

นับรวม Document ที่ EmployeeAge เป็น null (Larry, Mike) และ Document ที่ไม่มี Field EmployeeAge (Carol, Ramit) รวม 4 รายการ

กรณีที่ 2 - Field ไม่มีอยู่จริง:

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

นับเฉพาะ Document ที่ไม่มี Field EmployeeAge (Carol, Ramit) รวม 2 รายการ