我发现官方MongoDB C#驱动的一些方法使用SafeMode
和返回SafeModeResult
。这是什么SafeMode
以及如何使用它?很高兴看到一些用例——例如,RemoveAll
使用MongoCollection
.
3 回答
安全模式仅在写入数据库时才相关。
为了速度,如果安全模式关闭并且写入操作失败,驱动程序不会等待关心。净效应是没有异常被抛出,你不知道你有一个错误。
Safemode 设置为 on 将强制驱动程序等待成功确认,如果发生错误将抛出异常。
对您关心的数据(用户帐户、订单等)使用安全模式。
不要将安全模式用于非必要数据(日志记录、使用情况统计等)
MongoDB 的默认行为是关闭安全模式。
从文档:
SafeMode 有各种级别,该类用于表示这些级别。安全模式仅适用于尚未返回值的操作(因此它不适用于查询或命令)。它适用于以下 MongoCollection 方法:插入、删除、保存和更新。
安全模式的要点是,在将插入、删除、保存或更新消息发送到服务器之后,它会跟随一个 GetLastError 命令,以便驱动程序可以验证操作是否成功。此外,当使用副本集时,可以验证信息是否已复制到某个最小数量的辅助服务器。
SafeMode 类具有静态属性和方法,可让您轻松访问常用模式或创建自己的模式:
* SafeMode.False * SafeMode.True * SafeMode.WaitForReplications(int n)
“n”的值包括主要的,所以通常你希望 n >= 2。
我希望这足以理解 SafeMode 的用途。
SafeMode
似乎已经过时了。
等效的是WriteConcern.Acknowledged on MongoClientSettings
(通常传递给MongoClient
构造函数)。Acknowledged 是当前驱动程序版本 (2.2.4) 中的默认 WriteConcern。