检查插入是否成功(MongoDB C#驱动程序)
问题描述:
假设“doc”是我想要插入到MongoDB集合中的一些文档,“collection”是我将文档插入到的集合。检查插入是否成功(MongoDB C#驱动程序)
我有类似如下:
try
{
WriteConcern wc = new WriteConcern();
wc.W = 1;
wc.Journal = true;
WriteConcernResult wcResult = collection.Insert(doc, wc);
if (!string.IsNullOrWhiteSpace(wcResult.ErrorMessage) || !wcResult.Ok)
{
return ErrorHandler(...);
}
else
{
return SuccessFunction(...);
}
}
catch (Exception e)
{
return e.Message;
}
基本上,如果插入任何原因而失败(硬件等不能正常工作),我想处理它(通过的ErrorHandler功能或catch子句),如果成功,我想调用SuccessFunction。
我的问题:上述代码是否足以用于错误检查目的?换句话说,所有失败的插入都会被捕获,所以在这些情况下SuccessFunction永远不会被调用?
答
你甚至不需要做任何检查。如果在使用除未确认之外的任何写入关注点时写入不成功,则collection.Insert将引发异常。
如果您想知道是否发生错误,您需要捕获WriteConcernException。
这是否也适用于多文档操作?因此,如果我插入或更新多个文档,但其中一些插入/更新失败,是否会引发该异常? – CynicalProgrammer 2014-11-03 17:27:44
如果指定了writeconcern,则会发生第一个错误,并且不会插入其他文档将引发异常。如果你已经指定了continueOnError = true,那么你最终会得到1个异常。 – 2014-11-03 18:10:08
谢谢!我还有一个问题:WriteConcernException是否也与FindAndModifyResult一起工作,或者只是WriteConcernResult?如果没有,是否有FindAndModifyResult的等价物,或者我应该检查结果是否为空? – CynicalProgrammer 2014-11-03 19:05:07