了解MongoDB中的WriteConcern C#

Cyn*_*mer 6 .net c# mongodb mongodb-.net-driver

我一直在阅读MongoDB中的Write Concern.我知道有几个级别决定了写操作成功的保证级别,并且设置此级别的性能越高,性能权衡越大.但是,我正在C#环境中工作,我正在尝试弄清楚如何在那里使用Write Concern以及哪些级别对某些情况最有效.我已经想出如何使用WriteConcernResult对象收集检查结果,我主要对关卡本身感兴趣.

这些是我的问题:

如何在C#中为特定写入设置写入关注级别?

这个答案建议使用连接字符串,但这看起来像一个全局设置,我不想要,因为我将使用的一些写操作比其他更"重要",我不想杀死性能.我注意到有一个WriteConcern类,但文档中没有详细介绍它的使用(它在文档中的MongoDB.Driver命名空间下).

特别是,如何将其设置为"Journaled"或"Replica Acknowledged",默认情况下它是"已确认"?

对于每个级别,哪些类型的问题可以通过Write Concern检查?

例如:系统崩溃,电源故障,网络连接问题,等我的东西通过偷渡特别感兴趣,是不容易发现,因为停电等等是非常明显的,我们可以估算,其中操作可能已失败的时间间隔并做出相应的反应

i3a*_*non 1

MongoDB C# 驱动程序中的操作具有接受 a 的重载,WriteConcern您可以通过使用类构造函数或使用预定义的静态属性来获取该重载:

var writeConcern = WriteConcern.W4;
writeConcern.Journal = true;
writeConcern.WTimeout = TimeSpan.FromMilliseconds(100);
new MongoClient().GetServer().GetDatabase("").GetCollection("").Insert(null, null, writeConcern);
Run Code Online (Sandbox Code Playgroud)

例如,这需要在主副本之上有 3 个副本,因此W4,Journal 标志打开,并且 wtimeout 设置为 100 毫秒。