replaceOne()(整体替换文档)

最后更新:2026-10-09

replaceOne()(整体替换文档)

replaceOne()用一份全新的文档整体替换集合中第一条匹配过滤条件的文档。与updateOne()使用更新操作符不同,replaceOne()的第二个参数就是新文档本身——替换后旧文档的所有字段(除_id外)都会被新文档覆盖。返回结果含matchedCount和modifiedCount。它常用于需要彻底改写文档结构的场景。

分类写入
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

db.<集合>.replaceOne(<过滤条件>, <新文档>, { upsert: <bool> })

⚙️ 参数

过滤条件匹配要替换文档的条件对象。
新文档完整的新文档,会覆盖除_id外的全部字段。
upsert可选。无匹配时插入新文档,默认false。

返回值:UpdateResult对象:{ acknowledged, matchedCount, modifiedCount, upsertedId }。

▶ 示例

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

// replaceOne:用新文档整体替换Bob的记录
db.users.replaceOne(
  { name: 'Bob' },
  { name: 'Bob', age: 26, city: 'Shanghai', vip: true }
)

运行结果:

{ acknowledged: true, matchedCount: 1, modifiedCount: 1, upsertedId: null }

📌 注意事项

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

📚 相关教程

❓ 常见问题

QreplaceOne和updateOne有什么区别?
AupdateOne()用操作符增量修改字段;replaceOne()用全新文档整体替换,除_id外所有字段都会被覆盖。
QreplaceOne能修改_id吗?
A不能。_id是文档的不可变标识,replaceOne的新文档必须保留原_id,否则报错。
QreplaceOne第二个参数能写更新操作符吗?
A不能。replaceOne的第二个参数就是新文档本身,{$set: ...}这类操作符会被当作普通字段原样写入。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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