$let(局部变量)

最后更新:2026-10-09

$let(局部变量)

$let在聚合表达式中定义局部变量并在in表达式中使用,避免重复计算复杂子表达式。语法是{ $let: { vars: { 变量名: 表达式 }, in: 表达式 } },变量以$$变量名引用。常用于一次算出中间结果多处复用,例如先算折扣再算税后价。MongoDB 5.0起vars也可传数组形式[{ name: ..., value: ... }],支持带$前缀的变量名。

分类字面·变量·对象
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ $let: { vars: { <变量>: <表达式> }, in: <表达式> } }

⚙️ 参数

vars变量定义,对象或MongoDB 5.0起的数组形式。
in使用变量的表达式,变量以$$变量名引用。

返回值:in表达式的计算结果

▶ 示例

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

// $let:用局部变量计算折扣后价格
db.orders.aggregate([
  { $project: {
      finalPrice: {
        $let: {
          vars: { base: '$price', discount: { $multiply: ['$price', 0.1] } },
          in: { $subtract: ['$$base', '$$discount'] }
        }
      }
  } }
])

运行结果:

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

📌 注意事项

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

📚 相关教程

❓ 常见问题

Q$let有什么用?
A定义局部变量复用中间结果,避免复杂表达式重复计算。
Q$let的变量怎么引用?
A在in表达式里用$$变量名引用。
Q$let变量和系统变量冲突吗?
A$let变量会遮蔽同名系统变量,命名时注意避免混淆。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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