$replaceWith(替换为)

最后更新:2026-10-09

$replaceWith(替换为)

$replaceWith 与 $replaceRoot 基本一致:用指定表达式的结果替换整个文档,但表达式结果为 null 或缺失时保留原文档而不是报错。适合能提级就提级、提不了就原样保留的场景。其余字段语义与 $replaceRoot 相同。

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

📝 语法

{ $replaceWith: <文档表达式> }

⚙️ 参数

文档表达式求值后替换整个文档的表达式,可为 null 或缺失。

返回值:替换后的文档流(结果为 null 时保留原文档)

▶ 示例

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

// $replaceWith:有 detail 就提升,否则保留原文档
db.orders.aggregate([
  { $replaceWith: '$detail' }
])

运行结果:

// 有 detail 的订单输出 detail 内容,没有的原样输出

📌 注意事项

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

📚 相关教程

❓ 常见问题

Q$replaceWith 和 $replaceRoot 区别?
A$replaceWith 结果为 null 时输出原文档;$replaceRoot 此时报错。
Q怎么合并多个字段为新文档?
A用 $mergeObjects 组合,如 { $replaceWith: { $mergeObjects: ['$a', '$b'] } }。
Q$replaceWith 会保留 _id 吗?
A不保留,除非表达式里显式包含 _id。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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