2013-10-14 1 views
1

Я хочу спросить вас, будет ли выполняться следующий код в одной атомной операции. Я использую драйвер mongodb C#.MongoDb C# драйвер обновляет несколько документов в одной атомной операции

Ввод метода - это список идентификаторов объектов, которые я хочу обновить.

public void Update(IEnumerable<string> ids) 
{ 
    var query = Query<T>.Where(t => ids.Contains(t.Id)); 
    var update = Update.Set("Modified", DateTime.Now); //this is just example of update 

    var options = new MongoUpdateOptions {Flags = UpdateFlags.Multi}; 

    Collection.Update(query, update, options); 
} 

Мне интересен случай, когда у меня есть обновленные документы. Что произойдет, если во время этого обновления произойдет сбой (проблема питания или оборудования)? Будет ли база данных согласованной?

спасибо.

ответ

0

MongoDB не поддерживает сделка или атомные документы с несколькими документами. MongoDB выполняет атомную операцию только на одном документе.

Вы можете проверить это в the documentation of Mongodb

Так что, если вы обновляете с запросом 1000 документов и ваш сбоем сервера во время этой операции, некоторые документы могут быть обновлены, другие не будут.