Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Sử dụng $ifNull trong MongoDB Aggregation

Toán tử $ifNull trong aggregation đánh giá biểu thức và trả về giá trị thay thế nếu biểu thức là null hoặc missing.

Tạo collection có giá trị 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") }

Xem dữ liệu:

> db.demo372.find();
{ "_id" : ObjectId("5e591aea2ae06a1609a00af6"), "FirstName" : "Chris" }
{ "_id" : ObjectId("5e591aef2ae06a1609a00af7"), "FirstName" : null }
{ "_id" : ObjectId("5e591af42ae06a1609a00af8"), "FirstName" : "David" }
{ "_id" : ObjectId("5e591afb2ae06a1609a00af9"), "FirstName" : null }

Aggregation dùng $ifNull thay null bằng "NOT PROVIDED":

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

Kết quả:

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

Cú pháp: { $ifNull: [ , ] }

  • Nếu khác null và không missing → trả về
  • Ngược lại → trả về

Khác với $cond, $ifNull ngắn gọn hơn cho trường hợp xử lý null/missing đơn giản.