以下に示すように、MongoDB には Document があります。内部ドキュメント構造内のドキュメントを更新する方法は次のようになります[{1},[{2}],[{3}],[{4}]]
。
例 : サブ子ドキュメント内の子ドキュメントにはobjectId:1
andobjectId:2
と andobjectId:3
がありobjectId:4
ます。お気に入り:
[{ _id : ObjectId("1")}],
[{ _id : ObjectId("2")}],
[{ _id : ObjectId("3")}],
[{ _id : ObjectId("4")}]
"Child": [{
"_id": ObjectId("1"),
Name: "Raghu",
Age : 21,
"subchild": [{
"_id": ObjectId("2"),
"Name": "Yuva",
Age : 23,
},
[{
"_id": ObjectId("3"),
Name: "Ravi",
Age : 25
}
],
[{
"_id": ObjectId("4"),
"Name": "Ram",
Age : 27
}
]
],
}
]
上記のサブ子ドキュメントを更新する方法 特定の _Id: ObjectId("3") および _Id : ObjectId("4") 例: [{ "_id": ObjectId("4"), "Name": "Ram", } ]
私はこのようにC#で試してみました:
I updated ObjectId : 1 like Example child.$.Subchild.0.Name="Raghu"
But not Updated ObjectId : 4 like Example child.$.Subchild.3.Name="Ram"
MongoServerSettings settings = new MongoServerSettings();
settings.Server = new MongoServerAddress("127.1.1.1", 27017);
MongoServer servers = new MongoServer(settings);
var db = servers.GetDatabase("StudentDB");
MongoCollection<Student> pax;
pax = db.GetCollection<Student>("StudentDetails");
IMongoQuery queryEdit = Query.EQ("Child.subchild._id", new ObjectId("4"));
var updateValues = new List<UpdateBuilder>();
{ updateValues.Add(Update.Set("child.$.Subchild.3.Name", "Ramu")); }
updateValues.Add(Update.Set("child.$.subchild.3.Age", 27));
IMongoUpdate update = Update.Combine(updateValues);
SafeModeResult sm = pax.Update(queryEdit, update, UpdateFlags.None, SafeMode.True);