updateOne()(更新单条)

最后更新:2026-10-09

updateOne()(更新单条)

updateOne() 更新集合中**匹配条件的第一条**文档。若有多条匹配,只更新第一条(按自然顺序)。更新操作需用更新操作符($set/$inc/$push 等)指定修改。返回结果含 matchedCount、modifiedCount、upsertedId 等字段。

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

📝 语法

db.<集合>.updateOne(<过滤条件>, <更新操作>, { upsert: <bool> })

⚙️ 参数

过滤条件匹配文档的条件对象,支持查询操作符。
更新操作更新操作符组成的对象,如{$set: {age: 22}}。
upsert可选。无匹配时是否插入一条新文档,默认false。

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

▶ 示例

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

// updateOne:把 Alice 的年龄改为 22
db.users.updateOne(
  { name: "Alice" },
  { $set: { age: 22 } }
)

运行结果:

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

📌 注意事项

📚 相关教程

❓ 常见问题

QupdateOne 和 findOneAndUpdate 什么区别?
AupdateOne 只返回统计结果(matched/modifiedCount),findOneAndUpdate 返回更新前(或后)的文档本身,适合需要读取旧值/新值的场景。
QupdateOne 匹配多条时怎么处理?
A只更新匹配到的第一条文档。若需要更新所有匹配文档,用 updateMany;如果担心更新顺序,可配合 sort 选项指定「第一条」的顺序。
QupdateOne 的过滤条件可以结合 $set 和 $inc 吗?
A可以。更新文档里可同时含多个更新操作符,如 { $set: { status: 'active' }, $inc: { visits: 1 } },它们按序原子生效。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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