1

这是我的确切架构:

{
  "_id" : ObjectId("4fb4fd04b748611ca8da0d48"),
  "Name" : "Categories",
  "categories" : [{
      "_id" : ObjectId("4fb4fd04b748611ca8da0d46"),
      "name" : "Naming_Conventions",
      "sub-categories" : [{
          "_id" : ObjectId("4fb4fd04b748611ca8da0d47"),
          "name" : "Namespace_Naming",
          "standards" : []
        }]
    }]
}

如您所见,我有一个名为“standards”的数组嵌套在其中。我将如何使用 C# 驱动程序以编程方式插入其中?我已经尝试了我在网上找到的所有示例,但没有一个有效。

4

1 回答 1

3

像下面这样的东西。显然,如果其中任何一个在到达它的过程中不存在,您将得到一个空引用异常。

var doc = collection.FindOne(Query.EQ("_id", new ObjectId("4fb4fd04b748611ca8da0d48")));

var standards = doc["categories"]
    .AsBsonArray[0]
    .AsBsonDocument["sub-categories"]
    .AsBsonArray;

standards.Add(new BsonDocument());

collection.Save(doc);
于 2012-05-17T14:52:58.040 回答