0

Mongo DbにC#ドライバーを使用しています。insertbatchコマンドを使用して、オブジェクトのリスト(IList)を渡します。挿入されたオブジェクトごとに、結果のステータス(正常に挿入されたかどうか)を知りたいです。insertbatchは、挿入する16MBのチャンクごとに1つのSafeModeResultオブジェクトのみを返すことを確認しました。insertbatchコマンドを使用して、挿入する各オブジェクトの戻りステータスを取得する場合、私にとって最善のアプローチは何ですか?

複数の要素を返すクエリを使用してコレクションから要素を削除する場合も、同じ質問が続きます。削除に成功したかどうか、削除した要素ごとに知りたいのですが。

4

2 に答える 2

1

まず、セーフモードがオンになっていることを確認します。最も簡単な方法は、接続文字列でセーフモードをオンに設定することです。

var connectionString = "mongodb:// localhost /?safe = true";

InsertBatchが例外をスローせずに完了すると、すべてのドキュメントがエラーなしで挿入されたことがわかります。

InsertBatchが例外をスローした場合、バッチの途中で失敗しました。残念ながら、サーバーは失敗する前にバッチのどこまで取得したかを報告しません。データベースにクエリを実行して、特定のドキュメントが挿入されたかどうかを確認する必要があります。

于 2012-05-08T05:20:30.640 に答える
0

同様に、Remove の場合、Remove が例外をスローせずに完了した場合、一致するすべてのドキュメントが正常に削除されたことがわかります。

サーバーがエラーを報告した場合、Remove は例外をスローします (セーフモードがオンであると仮定します)。ただし、サーバーはドキュメントを削除したかどうかを報告しません。Remove に渡したのと同じクエリで Find を呼び出すと、削除されていないすべてのドキュメントが取得されます。

于 2012-05-08T05:23:53.330 に答える