$multiply(乘法)
最后更新:2026-10-09
$multiply(乘法)
$multiply在聚合表达式中对多个数值求乘积,参数以数组传入,至少两个。常用于$project、$addFields、$set阶段,例如单价乘以数量得到小计、汇率换算等场景。任一参数为null或缺失时整体返回null;字符串或日期作为参数会报错。与$add类似,它是普通表达式而非累加器,跨文档累乘需要$group配合$push和$reduce实现。
| 分类 | 数学 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $multiply: [ <表达式1>, <表达式2>, ... ] }
⚙️ 参数
| 因数 | 数值或解析为数值的表达式,至少两个。 |
|---|
返回值:所有参数的乘积
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $multiply:单价乘数量求小计
db.orders.aggregate([
{ $project: {
subtotal: { $multiply: ['$price', '$quantity'] }
} }
])
运行结果:
{ '_id': 1, 'subtotal': 250 }
{ '_id': 2, 'subtotal': 72 }
📌 注意事项
- 参数必须是数字,字符串与日期会报错
- 任一参数为null或缺失,结果为null
- 跨文档累乘不是$multiply的职责,需用$group加$reduce实现
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q$multiply能乘字符串或日期吗?
A不能,非数字类型直接报错,需先用$toDouble或$toInt转换。
Q$multiply和$sum有什么区别?
A$sum是$group累加器按行求和;$multiply是表达式,对数组内几个值相乘。
Q跨多行文档求累乘怎么做?
A先$group用$push收集数值,再用$reduce逐项相乘。