使用ContinueOnError进行批量插入

时间:2013-10-28 20:54:19

标签: c# mongodb mongodb-.net-driver

我正在使用以下代码使用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)
{           
}

1 个答案:

答案 0 :(得分:1)

您使用的是csharp Mongo驱动程序的1.8版本吗?

如果是这样,请尝试升级到版本1.8.1,其中包含针对以下两个问题的修复:

因此,您的插入可能会成功,但由于上述错误,驱动程序仍然在批量插入操作上抛出异常。

此异常并非源自数据库本身,解释了为什么插入成功但您仍然需要在之后捕获异常 - 即db实际上是在尊重您的ContinueOnError标志但是驱动程序之后仍会抛出异常。< / p>