1

Рассмотрим следующий пример Монго документОдновременные частичные обновления в коллекции Монго

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

Предположим, если я пытаюсь сделать два параллельных частичных обновлений со следующими запросами:

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

Могу ли я получить следующее docuemnt состояние в монго после этих одновременных частичных обновлений:

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

Имеет ли два c oncurrent update оставляют документ с обновленными значениями, учитывая тот факт, что параллельные обновления не имеют общих полей. Без одновременной модификации?

ответ

1

Да, независимо от порядка выполнения двух обновлений, документ будет завершен, пока вы его покажете. Это связано с тем, что две атомные операции $set нацелены на разные поля, и любое поле, не упомянутое в обновлении, не изменяется.

Смежные вопросы