3

次のコードを使用して、C# ドライバーを使用してバッチ挿入を実行しています。一意のインデックスがあり、一意でないレコードを挿入しようとすると、黙って失敗するようにします。

設定してもInsertFlags.ContinueOnError、呼び出しでエラーが発生しInsertBatchます。以下に示すようにエラーを飲み込むと、すべて正常に動作します。しかし、これは確かに間違っていると感じます。

var mio = new MongoInsertOptions {Flags = InsertFlags.ContinueOnError};
// newImages is a list of POCO objects
try
{
    _db.GetCollection("Images").InsertBatch(newImages, mio);
}
catch (WriteConcernException)
{           
}
4

1 に答える 1

1

csharp Mongo ドライバーのバージョン 1.8 を使用していますか?

その場合は、次の 2 つの問題の修正が含まれているバージョン 1.8.1 にアップグレードしてみてください。

したがって、挿入は成功する可能性がありますが、上記のバグにより、ドライバーは一括挿入操作で例外をスローしています。

そして、この例外はデータベース自体から発生したものではなく、挿入が成功する理由を説明していますが、後で例外をキャッチする必要があります。つまり、実際にはデータベースは ContinueOnError フラグを尊重していますが、ドライバーは後で例外をスローします。

于 2013-10-30T02:05:12.463 に答える