1

コレクションを更新しています:

conn->update("mycollection", BSON("_id" << ID), BSON("$set" << BSON("myfiled" << myvalue)));

コレクションが本当に更新されたかどうかを知る方法はありますか? 関数「更新」は無効であり、スローされた例外はありません。関数 GetLastError は、データが db に書き込まれていない場合でも、空の文字列を返しました。

4

1 に答える 1

1

MongoDB のドキュメントから:

書き込みの懸念は、書き込み操作の成功を報告するときに MongoDB が提供する保証を表します。書き込み懸念の強さによって、保証のレベルが決まります。挿入、更新、および削除の書き込みに関する懸念が弱い場合、書き込み操作はすぐに戻ります。一部の障害ケースでは、弱い書き込みの問題で発行された書き込み操作が持続しない場合があります。より強い書き込みの懸念がある場合、クライアントは MongoDB の書き込み操作を送信した後、書き込み操作を確認するために待機します。

C++ ドライバーは使用しませんでしたが、Java ドライバーには、操作を制御できるWriteConcernクラスがあります。C++ ドライバーで同等のクラスを確認できます。

書き込み懸念の詳細については、こちらをご覧ください

于 2013-10-11T14:43:56.897 に答える