$cond(条件分支)

最后更新:2026-10-09

$cond(条件分支)

$cond 实现 if-then-else 三目逻辑,是聚合表达式里最基础的分支操作符。支持对象形式 { if, then, else } 和数组形式 [ 条件, 真值结果, 假值结果 ],两种写法等价。典型场景包括根据金额计算运费档位、把状态码映射为文字标签。条件按真值规则判定,非布尔值也可用。多分支场景用 $switch 更清晰。

分类集合·条件·转换
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ $cond: { if: <条件>, then: <结果1>, else: <结果2> } } 或 { $cond: [ <条件>, <结果1>, <结果2> ] }

⚙️ 参数

if/条件决定分支的表达式,按真值规则判定。
then/结果1条件为真时返回的结果。
else/结果2条件为假时返回的结果。

返回值:条件为真返回结果1,否则返回结果2

▶ 示例

请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):

// $cond:金额大于 100 视为大单
db.orders.aggregate([
  { $project: {
      level: { $cond: { if: { $gt: ['$amount', 100] }, then: 'big', else: 'small' } }
  } }
])

运行结果:

{ '_id': 1, 'level': 'big' }
{ '_id': 2, 'level': 'small' }

📌 注意事项

更多实战案例即将上线,敬请期待。

📚 相关教程

❓ 常见问题

Q条件可以不是布尔吗?
A可以,按真值规则判定,0、null、空字符串为假。
Q数组形式和对象形式有什么区别?
A没有,语义完全一样,只是写法不同。
Q多个分支怎么处理?
A用 $switch,按顺序匹配第一个为真的分支。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏