$subtract(减法)

最后更新:2026-10-09

$subtract(减法)

$subtract在聚合表达式中做减法,与$add相对。它接受两个参数:数值减数值得到差,日期减日期得到毫秒差,日期减毫秒数得到更早的新日期。常用于$project或$set阶段计算差值,例如优惠后价格或两个时间点之间的时长。注意$subtract只接受两个参数,且不能像$add那样接收多个操作数。任一参数为null或缺失时返回null。

分类数学
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ $subtract: [ <表达式1>, <表达式2> ] }

⚙️ 参数

被减数数值、日期或解析为这两类的表达式。
减数数值(毫秒数)或日期表达式,从被减数中减去。

返回值:数值之差;日期减日期返回毫秒;日期减毫秒返回新日期

▶ 示例

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

// $subtract:计算折扣后价格
db.orders.aggregate([
  { $project: {
      finalPrice: { $subtract: ['$price', '$discount'] }
  } }
])

运行结果:

{ '_id': 1, 'finalPrice': 90 }
{ '_id': 2, 'finalPrice': 45 }

📌 注意事项

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

📚 相关教程

❓ 常见问题

Q$subtract能计算两个日期的天数差吗?
A返回的是毫秒差,需除以86400000转成天数,或用$dateDiff直接按天求差。
Q$subtract和$add有什么关系?
A互为逆运算;$subtract只收两个参数,$add支持多个操作数。
Q日期减毫秒数会得到什么?
A得到一个更早的新日期,例如订单日期减86400000就是前一天。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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