我正在使用以下代码使用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)
{
}
答案 0 :(得分:1)
您使用的是csharp Mongo驱动程序的1.8版本吗?
如果是这样,请尝试升级到版本1.8.1,其中包含针对以下两个问题的修复:
InsertBatch fails when large batch has to be split into smaller sub batches
InsertBatch throws duplicate key exception with too much data...
因此,您的插入可能会成功,但由于上述错误,驱动程序仍然在批量插入操作上抛出异常。
此异常并非源自数据库本身,解释了为什么插入成功但您仍然需要在之后捕获异常 - 即db实际上是在尊重您的ContinueOnError标志但是驱动程序之后仍会抛出异常。< / p>