我发现官方MongoDB C#驱动程序的某些方法使用SafeMode
并返回SafeModeResult
。这是SafeMode
是什么以及如何使用它?很高兴看到一些用例 - 例如,使用RemoveAll
MongoCollection
方法的用例。
答案 0 :(得分:29)
安全模式仅在写入数据库时相关。
对于速度,如果安全模式关闭且写入操作失败,则驱动程序不会等待关注。净效果是没有异常被抛出,你不知道你有错误。
安全模式设置为on将强制驱动程序等待成功确认,如果发生错误将引发异常。
对您关心的数据(用户帐户,订单等)使用安全模式。
不要将safemode用于非必要的数据(记录,使用统计等)
MongoDB的默认行为是关闭安全模式。
答案 1 :(得分:24)
有各种级别的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。