1

私の質問は、タイトルのように明確です。mongoDb の関連レコードを更新するリクエストが私のサービスに来ると、「save」メソッドを使用します。

ただし、save メソッドが本当にレコードを更新するかどうかを理解したいと思います。

つまり、保存しようとしているコンテンツが mongoDb の既存のコンテンツと同じかどうかを知りたいのです。では、save メソッドを実行してもエラーが発生しなくても、本当に更新されているかどうかはわかりますか?

前もって感謝します

4

2 に答える 2

1

Saveメソッドは常にレコードを書き込みます。

保存されているレコードがすでに存在するレコードと同一であるため、書き込みが行われない状況はMongoにはありません。書き込みは単純に行われ、既存のデータを新しいデータで「上書き」します(これはたまたま同一です)。

あなたが知ることができる唯一の方法は、古いドキュメントと新しいドキュメントを比較することです-そしてそれは多くの余分な作業です。

于 2012-11-30T03:57:35.273 に答える
1

これを確認するにはいくつかの方法があります。

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/

これらは両方とも、すべての公式ドライバーで利用できます。

于 2012-11-29T10:13:23.747 に答える