检查插入是否成功(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。

+0

这是否也适用于多文档操作?因此,如果我插入或更新多个文档,但其中一些插入/更新失败,是否会引发该异常? – CynicalProgrammer 2014-11-03 17:27:44

+1

如果指定了writeconcern,则会发生第一个错误,并且不会插入其他文档将引发异常。如果你已经指定了continueOnError = true,那么你最终会得到1个异常。 – 2014-11-03 18:10:08

+0

谢谢!我还有一个问题:WriteConcernException是否也与Fin​​dAndModifyResult一起工作,或者只是WriteConcernResult?如果没有,是否有FindAndModifyResult的等价物,或者我应该检查结果是否为空? – CynicalProgrammer 2014-11-03 19:05:07