小编Cyn*_*mer的帖子

将MongoDB BsonDocument转换为C#中的有效JSON

我正在使用MongoDB C#驱动程序.我有BsonDocument一些数据,其中包括一些特定于MongoDB的类型(如ObjectID和ISODates).我想将其转换为有效的通用JSON字符串.换句话说,我不可能有这样的事情_id: ObjectId(...)还是date: ISODate(...)而是宁愿_id: "..."date: "...".基本上,我想将只有MongoDB识别的特殊类型转换为常规字符串,以便更容易地解析它们.问题是内置函数.ToJson()(其他StackOverflow答案建议)并没有真正将文档转换为有效的JSON,因为它维护了这些特殊类型.我的文档还包含许多级别的数组和子文档,因此简单的for循环是不够的.转换BsonDocument它的最佳方法是什么来避免这个问题?我更喜欢内置的东西而不是手动递归文档来修复所有问题.

json mongodb mongodb-.net-driver

12
推荐指数
5
解决办法
2万
查看次数

了解MongoDB中的WriteConcern C#

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

这些是我的问题:

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

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

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

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

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

.net c# mongodb mongodb-.net-driver

6
推荐指数
1
解决办法
4861
查看次数

oplog字段实际上意味着什么?

我之前看过这个问题,但答案很模糊.我一直在对oplog进行一些研究,并试图准确理解它是如何工作的.特别是,我希望能够很好地理解oplog文档中的字段以及它们存储的数据.

这些是我通过测试找到的领域,我认为它们的意思以及我仍然不确定的内容:

  • ts:写操作/ oplog条目的时间戳
  • h:oplog条目的唯一标识符(但为什么它有时是正面的,有时是负面的?)
  • op:执行的操作类型(通常用于插入,更新或删除的i/u/d)
  • ns:受影响的数据库和集合
  • o:执行更改后文档的新状态
  • o2:在更新操作期间似乎包含文档的_id字段.当相同的字段作为o字段的一部分出现时,为什么还需要这个字段,o字段还包含文档的其余部分?
  • b:似乎是删除操作时出现的bool.这个领域有什么意义?

我想确认我上面提出的观点是否准确,以及对不明确的位的澄清.我也有兴趣知道是否有任何其他字段可以出现在oplog文档中.

mongodb

5
推荐指数
1
解决办法
3274
查看次数

检查插入是否成功(MongoDB C#驱动程序)

假设"doc"是我要插入MongoDB集合的一些文档,"collection"是我将文档插入的集合.

我有以下内容:

try
{
    WriteConcern wc = new WriteConcern();
    wc.W = 1;
    wc.Journal = true;

    WriteConcernResult wcResult = collection.Insert(doc, wc);

    if (!string.IsNullOrWhiteSpace(wcResult.ErrorMessage) || !wcResult.Ok)
    {
        return ErrorHandler(...); 
    }
    else
    {
        return SuccessFunction(...); 
    }
}
catch (Exception e)
{
    return e.Message;
}
Run Code Online (Sandbox Code Playgroud)

基本上,如果插入因任何原因(硬件不再正常工作)失败,我想处理它(通过ErrorHandler函数或catch子句),如果成功,我想调用SuccessFunction.

我的问题:以上代码是否足以进行错误检查?换句话说,是否会捕获所有失败的插入,以便在这些情况下永远不会调用SuccessFunction?

mongodb mongodb-.net-driver

2
推荐指数
1
解决办法
3678
查看次数

标签 统计

mongodb ×4

mongodb-.net-driver ×3

.net ×1

c# ×1

json ×1