如何在 MongoDB 中查詢欄位為 null 或未設定的記錄?


下面兩種情況的使用指南 −

情況 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

更新日期: 30-Jul-2019

691 次瀏覽

開啟你 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.