Mongo集合中的并发部分更新

时间:2014-12-18 22:06:26

标签: mongodb concurrency mongodb-java concurrentmodification

考虑以下mongo文档

{
  _id:...
  param1:oldValue1
  param2:oldValue2 
}

假设我是否尝试使用以下查询进行两次并发部分更新:

db.collection.update(  { _id:...} , { $set: { param1 : "newValue1"  } }
db.collection.update(  { _id:...} , { $set: { param2 : "newValue2"  } }

在这些并发的部分更新后,我是否会在mongo中获得以下docuemnt状态:

{
  _id:...
  param1:newValue1
  param2:newValue2
}

考虑到并发更新没有公共字段而没有并发修改问题,两个并发更新是否会使文档保留更新值?

1 个答案:

答案 0 :(得分:1)

是的,无论两个更新的执行顺序如何,文档都会在您显示时结束。这是因为两个原子$set操作以不同的字段为目标,并且未修改更新中未引用的任何字段。