3

複数の更新はアトミックではなく、プロセス中に更新クエリが失敗する可能性があることを理解しています。エラーは で見つけることができますgetLastError。しかし、その特定のクエリで既に行われた更新をロールバックしたい場合はどうすればよいでしょうか? 退屈な 2 フェーズ コミットよりも簡単な方法はありますか?

たとえば、何人かのユーザーとその電話モデルの単純なコレクションがあるとします。現在、Nexus 4 から Nexus 5 を持っているすべてのユーザーに対して複数の更新を行っています (夢のようですよね?)。唯一の条件は、すべてかまったくないかです。そのため、N4 ユーザーが 1 人でも取得できなければ、すべての N5 が取り消されます。さて、どういうわけかmongodbが途中で失敗し、N4の数人のユーザーとN5の数人のユーザーで立ち往生しています。さて、私がネットから集めたのは、mongo を直接ロールバックさせることはできないということです。操作が失敗した場合は、N5 ユーザーを手動で更新して N4 に戻す必要があります。そして、それがうまくいかない場合は、それを繰り返してください。または、複雑なコレクションがある場合は、新しいキーを保持する必要があります。Statusキーワードupdates / updatedで更新します。

これは私が理解していることです。もっと簡単な方法があれば知りたいと思いました。コメントから、答えは大したことではないと思います。

4

0 に答える 0