$ifNull(聚合)
定义
5.0 版本中的更改。
$ifNull
表达式计算输入表达式的 null 值并返回:
$ifNull
将未定义的值和缺失字段视为 null。
兼容性
可以使用 $ifNull
查找托管在以下环境中的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
{ $ifNull: [ <input-expression-1>, ... <input-expression-n>, <replacement-expression-if-null> ] }
示例
以下示例中使用了此inventory
集合:
db.inventory.insertMany( [ { "_id" : 1, "item" : "buggy", description: "toy car", "quantity" : 300 }, { "_id" : 2, "item" : "bicycle", description: null, "quantity" : 200 }, { "_id" : 3, "item" : "flag" } ] )
单个输入表达式
以下示例使用 $ifNull
返回:
description
如果非空。"Unspecified"
字段符(如果description
为 null 或缺失)。
db.inventory.aggregate( [ { $project: { item: 1, description: { $ifNull: [ "$description", "Unspecified" ] } } } ] )
输出:
{ "_id" : 1, "item" : "buggy", "description" : "toy car" } { "_id" : 2, "item" : "bicycle", "description" : "Unspecified" } { "_id" : 3, "item" : "flag", "description" : "Unspecified" }
多个输入表达式
版本 5.0 中的新增功能。
以下示例使用 $ifNull
返回:
description
如果非空。quantity
如果description
为空或缺失,而quantity
为非空。"Unspecified"
字符串(如果description
和quantity
都为 null 或缺失)。
db.inventory.aggregate( [ { $project: { item: 1, value: { $ifNull: [ "$description", "$quantity", "Unspecified" ] } } } ] )
输出:
{ "_id" : 1, "item" : "buggy", "value" : "toy car" } { "_id" : 2, "item" : "bicycle", "value" : 200 } { "_id" : 3, "item" : "flag", "value" : "Unspecified" }