首页 > 解决方案 > mongodb updateMany 查询过滤和更新竞争条件?

问题描述

db.collection.updateMany(filter, update, options)

updateMany接受查询过滤器。假设此查询过滤器返回 5 个要更新的文档。然后此操作将尝试更新这 5 个文档。如果另一个线程(同时,在此updateMany's查询过滤器运行并返回 5 个文档供其更新之后):

  1. 更新这 5 个文档中的一个或多个,那么当这个 updateMany 尝试更新时会返回错误吗?
  2. 删除这些文档之一,然后当此 updateMany 尝试更新时会返回错误?
  3. 插入与此 updateMany 的查询过滤器匹配的另一条记录,那么此操作不会更新该记录?

我的理解正确吗?

标签: mongodbmongodb-query

解决方案


关于一致性的 mongodb 官方文档回答了你的问题。

该示例正是关于updateMany命令的。

https://docs.mongodb.com/manual/core/read-isolation-consistency-recency/#read-uncommitted-and-multiple-document-write


推荐阅读