2014-12-18 19 views
1

考慮以下蒙戈文件併發部分更新

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

想,如果我試圖做以下查詢兩個並行部分更新:

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

我會得到下面的docuemnt狀態在mongo中這些併發的部分更新之後:

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

兩個c oncurrent更新使文檔保留更新值,考慮到併發更新沒有公共字段的事實。沒有併發修改問題?

回答

1

是的,無論這兩個更新的執行順序如何,文檔最終都會顯示出來。這是因爲兩個原子$set操作的目標是不同的字段,並且未修改更新中未引用的任何字段。