了解MongoDB中的WriteConcern C#

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

这些是我的问题:

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

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

特别是,我如何将其设置为“Journaled”或“Replica Acknowledged”,因为它默认为“已确认”?

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

例如:系统崩溃,电源故障,网络连接问题等。我对偷偷摸摸的东西特别感兴趣,因为电源故障等非常明显,我们可以估计操作可能失败的时间间隔。并做出相应的反应

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

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

例如,这需要在主数据库顶部有3个副本,因此W4 ,日志标志打开,wtimeout设置为100毫秒。