如何在MongoDB C#驱动程序中使用安全模式

时间:2011-01-05 14:02:16

标签: mongodb mongodb-.net-driver

我发现官方MongoDB C#驱动程序的某些方法使用SafeMode并返回SafeModeResult。这是SafeMode是什么以及如何使用它?很高兴看到一些用例 - 例如,使用RemoveAll MongoCollection方法的用例。

3 个答案:

答案 0 :(得分:29)

安全模式仅在写入数据库时​​相关。

对于速度,如果安全模式关闭且写入操作失败,则驱动程序不会等待关注。净效果是没有异常被抛出,你不知道你有错误。

安全模式设置为on将强制驱动程序等待成功确认,如果发生错误将引发异常。

对您关心的数据(用户帐户,订单等)使用安全模式。

不要将safemode用于非必要的数据(记录,使用统计等)

MongoDB的默认行为是关闭安全模式。

答案 1 :(得分:24)

来自documentation

  

有各种级别的SafeMode,   而这个类用来表示   那些水平。 SafeMode仅适用于   尚未返回的操作   值(因此它不适用于查询   或命令)。它适用于   遵循MongoCollection方法:   插入,删除,保存和更新。

     

SafeMode的要点是经过一段时间   插入,删除,保存或更新消息   被发送到它遵循的服务器   通过GetLastError命令,所以   驱动程序可以验证该操作   成功了。另外,使用时   副本集可以验证   信息已经存在   复制到一些最小数量   辅助服务器。

     

SafeMode类具有静态   让你的属性和方法   轻松访问常用模式或创建   你自己的:

* SafeMode.False
* SafeMode.True
* SafeMode.WaitForReplications(int n)
     

“n”的值包括   主要的,所以通常你想要n> = 2。

我希望这足以理解SafeMode的目的。

答案 2 :(得分:1)

SafeMode似乎已经过时了。

MongoClientSettings上的等效项为WriteConcern.Acknowledged(通常传递给MongoClient构造函数)。 Acknowledged是当前版本的驱动程序(2.2.4)中的默认WriteConcern。

另见MongoDb SafeMode compare to WriteConcern