3

2 つの配列を含むドキュメントがあり、1 つの要素を 1 つの配列から別の配列に移動したいのですが、コンソールでこれを試してみたところ、うまくいきました。

db.examplecol.update({_id: ObjectId("5056b4b2b9f53a21385076c5")} , {'$pull':{setA:3}, '$push':   {setB:3}})

しかし、1 つのコマンドで 2 つの更新を行う例はまだ見たことがありません。私の質問は、これがアトミック操作かどうかです。この操作の途中で何か問題が発生した場合、要素がプルされたがプッシュされなかったため、要素を「失う」リスクがありますか?

4

1 に答える 1

6

MongoDB の Atomic Operationsドキュメントに基づいており、操作は単一のドキュメントに対して行われるため、操作はアトミックである必要があります。ジャーナリングを使用していることを確認する必要があります。そのため、更新の途中で電源がオフになった場合、MongoDB は更新前の既知の良好な状態に回復します。

于 2012-09-17T13:48:36.803 に答える