$cond(聚合)
定义
兼容性
可以使用 $cond
查找托管在以下环境中的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
$cond
表达式有两种语法:
{ $cond: { if: <boolean-expression>, then: <true-case>, else: <false-case> } }
或者:
{ $cond: [ <boolean-expression>, <true-case>, <false-case> ] }
对于任一个语法,$cond
需要所有三个参数(if-then-else
)。
如果 <boolean-expression>
的计算结果为 true
,则 $cond
计算并返回 <true-case>
表达式的值。否则,$cond
将计算值并返回 <false-case>
表达式的值。
例子
下面的示例使用包含以下文档的 inventory
集合:
{ "_id" : 1, "item" : "abc1", qty: 300 } { "_id" : 2, "item" : "abc2", qty: 200 } { "_id" : 3, "item" : "xyz1", qty: 250 }
以下聚合操作使用 $cond
表达式,如果 qty
值大于或等于 250,则将 discount
值设置为 30
;如果 qty
值小于 250
,则将该值设置为 20
:
db.inventory.aggregate( [ { $project: { item: 1, discount: { $cond: { if: { $gte: [ "$qty", 250 ] }, then: 30, else: 20 } } } } ] )
操作返回以下结果:
{ "_id" : 1, "item" : "abc1", "discount" : 30 } { "_id" : 2, "item" : "abc2", "discount" : 20 } { "_id" : 3, "item" : "xyz1", "discount" : 30 }
以下操作使用 $cond
表达式的数组语法,并返回相同的结果:
db.inventory.aggregate( [ { $project: { item: 1, discount: { $cond: [ { $gte: [ "$qty", 250 ] }, 30, 20 ] } } } ] )