$set(设置字段)

最后更新:2026-10-09

$set(设置字段)

$set 是 $addFields 的别名:给每个文档新增或覆盖字段,保留其余所有字段。用于在管道中途补充计算字段、常量或表达式结果。自 MongoDB 3.4 引入后与 $addFields 行为完全一致,两者可互换;与更新操作符 $set 同名,注意区分语境。

分类核心阶段
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ $set: { <字段>: <表达式>, ... } }

⚙️ 参数

字段字段名映射为聚合表达式或常量值。

返回值:设置字段后的文档流

▶ 示例

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

// $set:加常量状态并转换金额类型
db.orders.aggregate([
  { $set: { status: 'PENDING', amount: { $toDouble: '$amount' } } }
])

运行结果:

// 原字段保留,status 为常量,amount 转为 double

📌 注意事项

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

📚 相关教程

❓ 常见问题

Q$set 和 $addFields 选哪个?
A两者等价,习惯上 $addFields 更常见;$set 与更新操作符同名易混淆。
Q$set 能设置内嵌字段吗?
A能,用点号路径,如 { $set: { 'addr.city': 'SH' } }。
Q$set 会删除字段吗?
A不会,它只新增或覆盖;删除字段要用 $unset。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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