You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB:updateOne与findAndModify的并发及性能疑问

MongoDB UpdateOne 与 FindAndModify 核心疑问解答

1. 查询完成后、更新执行前是否会有其他进程介入?

不会。UpdateOne 和 FindAndModify 都是原子性操作,MongoDB 会将查询匹配目标文档、执行更新的整个流程封装为一个不可拆分的单操作。

在操作执行期间,WiredTiger 存储引擎会对目标文档施加行级锁(旧版本 MMAPv1 为文档级锁),确保其他进程无法在这个间隙修改同一文档,完全避免了中间环节的并发介入问题。

2. 二者的性能是否存在差异?

存在细微差异,核心取决于是否需要返回修改后的文档:

  • 若都不需要返回文档:两者性能几乎一致,底层执行逻辑相近,都是定位文档后执行更新。
  • 若 FindAndModify 需要返回修改后的文档(默认行为):会多一步文档序列化、数据回传的开销,相比 UpdateOne(默认仅返回更新结果统计,如匹配数、修改数)会稍慢一些。
    另外,当配置 upsert: true 时,FindAndModify 可以直接返回新插入的文档,而 UpdateOne 仅返回是否完成插入的状态标识,这种场景下 FindAndModify 因额外的数据返回,性能也会略低于 UpdateOne。

内容的提问来源于stack exchange,提问作者S-Wing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 03:22:05