Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs 菜单
Docs 主页
/ /

$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> 表达式的值。

参数可以是任何有效表达式。有关表达式的更多信息,请参阅表达式

提示

本页上的示例使用 sample_mflix示例数据集 中的数据。有关如何将此数据集加载到自管理MongoDB 部署中的详细信息,请参阅加载示例数据集。如果对示例数据库进行了任何修改,则可能需要删除并重新创建数据库才能运行本页上的示例。

以下聚合操作使用$cond表达式为每部电影分配租赁价格。该操作将 imdb.rating 大于或等于 9 的电影定价为 5.99。该操作将所有其他电影的价格定为 3.99

db.movies.aggregate( [
{ $match: { runtime: { $gt: 1000 } } },
{
$project:
{
title: 1,
rentalPrice:
{
$cond: {
if: { $gte: [ "$imdb.rating", 9 ] },
then: 5.99,
else: 3.99
}
}
}
}
] )
[
{ _id: ..., title: 'Baseball', rentalPrice: 5.99 },
{ _id: ..., title: 'Centennial', rentalPrice: 3.99 }
]

以下操作使用 $cond 表达式的数组语法,并返回相同的结果:

db.movies.aggregate( [
{ $match: { runtime: { $gt: 1000 } } },
{
$project:
{
title: 1,
rentalPrice:
{
$cond: [
{ $gte: [ "$imdb.rating", 9 ] },
5.99,
3.99
]
}
}
}
] )

后退

$concatArrays

在此页面上