2

次のコードが 1 つのアトミック操作で実行されるかどうかお尋ねしたいと思います。mongodb c# ドライバーを使用しています。

メソッドへの入力は、更新するオブジェクトの ID のリストです。

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);
}

更新するドキュメントが何百万もある場合、私はそのケースについて興味深いです。この更新中に障害 (電源またはハードウェアの問題) が発生した場合はどうなりますか? データベースは一貫した状態になりますか?

ありがとう。

4

2 に答える 2

0

MongoDB は、トランザクションまたはアトミック マルチ ドキュメントをサポートしていません。MongoDB は、1 つのドキュメントに対してのみアトミック操作を実行します。

これはMongodbのドキュメントで確認できます

したがって、クエリ 1000 ドキュメントで更新し、この操作中にサーバーがクラッシュした場合、一部のドキュメントは更新される可能性があり、他のドキュメントは更新されない可能性があります。

于 2013-10-14T15:32:39.610 に答える