这是我的确切架构:
{
"_id" : ObjectId("4fb4fd04b748611ca8da0d48"),
"Name" : "Categories",
"categories" : [{
"_id" : ObjectId("4fb4fd04b748611ca8da0d46"),
"name" : "Naming_Conventions",
"sub-categories" : [{
"_id" : ObjectId("4fb4fd04b748611ca8da0d47"),
"name" : "Namespace_Naming",
"standards" : []
}]
}]
}
正如你所看到的那样,我有一个名为“standards”的数组嵌套在那里。如何使用C#驱动程序以编程方式插入?我已经尝试了我在网上找到的所有例子,但没有一个是有效的。
答案 0 :(得分: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);