$add(加法)
最后更新:2026-10-09
$add(加法)
$add在聚合表达式中做加法,可把多个数值相加得到总和,也可把毫秒数加到日期上得到新日期。它常用于$project、$addFields、$set等阶段计算合计,例如计算含税总价。参数以数组形式传入,至少两个;任一参数为null或缺失时整体返回null。若要把两个日期相减求毫秒差,用$subtract更合适。
| 分类 | 数学 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $add: [ <表达式1>, <表达式2>, ... ] }
⚙️ 参数
| 操作数 | 数值、日期或解析为这两类的表达式,至少两个。 |
|---|
返回值:所有数值之和;日期与毫秒数相加返回新日期
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $add:计算含税总价
db.orders.aggregate([
{ $project: {
total: { $add: ['$price', '$tax'] }
} }
])
运行结果:
{ '_id': 1, 'total': 110 }
{ '_id': 2, 'total': 55 }
📌 注意事项
- 任一参数为null或缺失,整体返回null(可用$ifNull兜底)
- 日期与毫秒数相加返回新日期,毫秒换算成天数要先除以86400000
- $add与$sum不同:$sum是$group里的累加器,$add是普通表达式
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q$add和$sum有什么区别?
A$sum是$group阶段的累加器,对分组内的多行求和;$add是普通表达式,对数组内的多个值相加。
Q$add能把日期加天数吗?
A不能直接加天数,数值按毫秒计算,先乘86400000,或用$dateAdd按天单位直接加更直观。
Q$add遇到null会怎样?
A任一参数为null或缺失,结果就是null;需要默认值可用$ifNull包裹。