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

以下のようなもの。明らかに、これらのいずれかが途中で存在しない場合は、null参照例外が発生します。

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 に答える