Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

$cond(聚合)

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 例子
$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 ]
}
}
}
]
)

后退

$concatArrays