如何將 $ifNull 與 MongoDB 聚合一起使用?


$ifNull 評估一個表示式,如果該表示式評估為非 null 值則返回表示式的值。

讓我們首先建立一個包含文件的集合 -

> db.demo372.insertOne({"FirstName":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e591aea2ae06a1609a00af6")
}
> db.demo372.insertOne({"FirstName":null});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e591aef2ae06a1609a00af7")
}
> db.demo372.insertOne({"FirstName":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e591af42ae06a1609a00af8")
}
> db.demo372.insertOne({"FirstName":null});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e591afb2ae06a1609a00af9")
}

使用 find() 方法顯示集合中的所有文件 -

> db.demo372.find();

這將產生以下輸出 -

{ "_id" : ObjectId("5e591aea2ae06a1609a00af6"), "FirstName" : "Chris" }
{ "_id" : ObjectId("5e591aef2ae06a1609a00af7"), "FirstName" : null }
{ "_id" : ObjectId("5e591af42ae06a1609a00af8"), "FirstName" : "David" }
{ "_id" : ObjectId("5e591afb2ae06a1609a00af9"), "FirstName" : null }

以下是要將 $ifNull 與聚合一起使用的查詢 -

> db.demo372.aggregate(
...    [
...       {
...          $project: {
...
...             FirstName: { $ifNull: [ "$FirstName", "NOT PROVIDED" ] }
...          }
...       }
...    ]
... )

這將產生以下輸出 -

{ "_id" : ObjectId("5e591aea2ae06a1609a00af6"), "FirstName" : "Chris" }
{ "_id" : ObjectId("5e591aef2ae06a1609a00af7"), "FirstName" : "NOT PROVIDED" }
{ "_id" : ObjectId("5e591af42ae06a1609a00af8"), "FirstName" : "David" }
{ "_id" : ObjectId("5e591afb2ae06a1609a00af9"), "FirstName" : "NOT PROVIDED" }

更新於: 2020 年 4 月 2 日

2K+ 檢視

開啟您的 職業

透過完成課程獲得認證

開始
廣告