$divide(除法)
最后更新:2026-10-09
$divide(除法)
$divide在聚合表达式中做除法,接受两个参数:被除数与除数。常用于计算单价、人均、百分比等场景,例如用$divide把两个$sum的结果相除得到占比。注意除数为0时不会报错,而是返回null,这一点与编程语言不同;任一参数为null或缺失同样返回null。$divide支持整数、浮点数与Decimal类型,结果类型通常为double。
| 分类 | 数学 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $divide: [ <表达式1>, <表达式2> ] }
⚙️ 参数
| 被除数 | 数值或解析为数值的表达式。 |
|---|---|
| 除数 | 作为分母的数值表达式;为0时结果返回null。 |
返回值:两个数值相除的商;除数为0时返回null
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $divide:计算平均每件商品价格
db.orders.aggregate([
{ $project: {
avgPrice: { $divide: ['$total', '$quantity'] }
} }
])
运行结果:
{ '_id': 1, 'avgPrice': 25 }
{ '_id': 2, 'avgPrice': 9 }
📌 注意事项
- 除数为0返回null,不会抛异常
- 整数相除得到double类型,需要取整时配合$round或$trunc
- 任一参数为null或缺失,结果返回null
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q$divide除以0会报错吗?
A不会,返回null;需要默认值时用$ifNull处理。
Q整数相除结果是什么类型?
A结果是double类型,如5除以2得到2.5,不会像整数除法那样截断。
Q两个$sum的结果怎么求占比?
A直接作为$divide的两个参数,先$group求和再在$project里相除。