如何在C#中使用MongoDbClient在两个BsonDocuments之间添加引用

时间:2016-01-19 20:00:25

标签: mongodb mongodb-.net-driver

我试图在C#中的两个BsonDocument之间添加引用,但不幸的是,我不知道并且找不到任何解释如何操作的文档。

这是我的代码:

var parent = new BsonDocument( new BsonElement("name","parentTest"));
parent.Add("newField", "test");

var child1 = new BsonDocument( new BsonElement("name","childTest1"));
var child2 = new BsonDocument( new BsonElement("name","childTest2"));

我想在父BsonDocument和两个子文档(child1和child2)之间创建一个引用(一对多)。

我曾尝试使用MongoDbRef,但没有成功。

谢谢

1 个答案:

答案 0 :(得分:0)

在阅读了大量关于csharp提供者的文档后,我决定阅读php文档并按照以下步骤操作:

  1. 使用mongodb命令创建文档和引用 线客户端
  2. 使用csharp提供程序查询数据库,看看是什么类型的     类型BsonDocument将返回参考值。
  3. 重新创建相同的结构,查看命令行客户端     将返回相同的json字符串。
  4. 我不知道官方的cshap提供商有什么能为我执行此操作,但我无法找到任何解释如何执行此操作的文档。所以我自己解决了这个问题。如果有人知道不同或更简单的方法,请在此处分享您的知识。谢谢大家!

    由于我的努力,我已经创建了一种扩展方法,使其更容易。下面的代码是这样的类:

      public static class MyMongoDbExtension
      {
        public static BsonDocument GetDBRef(this BsonDocument document, string collectionName)
        {
          var id = document.GetValue("_id");
          var result =  new BsonDocument();
          result.Add(new BsonElement("$ref", collectionName));
          result.Add(new BsonElement("$id", id));
          return result;
        }
      }