私の質問は、タイトルのように明確です。mongoDb の関連レコードを更新するリクエストが私のサービスに来ると、「save」メソッドを使用します。
ただし、save メソッドが本当にレコードを更新するかどうかを理解したいと思います。
つまり、保存しようとしているコンテンツが mongoDb の既存のコンテンツと同じかどうかを知りたいのです。では、save メソッドを実行してもエラーが発生しなくても、本当に更新されているかどうかはわかりますか?
前もって感謝します
Saveメソッドは常にレコードを書き込みます。
保存されているレコードがすでに存在するレコードと同一であるため、書き込みが行われない状況はMongoにはありません。書き込みは単純に行われ、既存のデータを新しいデータで「上書き」します(これはたまたま同一です)。
あなたが知ることができる唯一の方法は、古いドキュメントと新しいドキュメントを比較することです-そしてそれは多くの余分な作業です。
これを確認するにはいくつかの方法があります。
1 つ目は、Save を呼び出した後、getLastError メソッドを呼び出すことです。コンソール内では、これは単なる db.getLastError() です。
これにより、最後の操作中にエラーが発生したかどうかがわかります。詳細については、アドレスhttp://docs.mongodb.org/manual/core/write-operations/#write-concernを参照してください。
もう 1 つの方法は、findAndModify を呼び出すことです。これにより、ドキュメントを更新し、更新されたドキュメントを元に戻すことができます。 http://docs.mongodb.org/manual/reference/command/findAndModify/
これらは両方とも、すべての公式ドライバーで利用できます。