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

15

我发现官方的 MongoDB C# 驱动程序中,有些方法使用了 SafeMode 并返回 SafeModeResult。什么是 SafeMode,如何使用它?能否提供一些使用案例,例如在 MongoCollectionRemoveAll 方法中的使用案例。

3个回答

29

仅在向数据库写入数据时才需要考虑安全模式。

为了提高速度,如果关闭了安全模式并且写操作失败,驱动程序不会等待处理。其结果是没有异常被抛出,你不知道是否有错误发生。

打开安全模式将强制驱动程序等待成功确认,并在发生错误时抛出异常。

对于重要的数据(如用户帐户、订单等),请使用安全模式。

对于非必需的数据(如日志、使用统计等),不要使用安全模式。

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


24

来自文档

有各种不同级别的安全模式,这个类用于表示这些级别。SafeMode 仅适用于没有返回值的操作(因此不适用于查询或命令)。它适用于以下 MongoCollection 方法:Insert、Remove、Save 和 Update。

SafeMode 的要点是,在将 Insert、Remove、Save 或 Update 消息发送到服务器后,会跟随一个 GetLastError 命令,以便驱动程序可以验证操作是否成功。此外,在使用副本集时,可以验证信息已复制到一些最少数量的辅助服务器。

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

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

"n" 的值包括主节点,因此通常您需要 n >= 2。

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


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接