2013-05-25 3 views
0

В моем MongoDB у меня есть документ, как показано ниже. Как обновить документ внутри внутренних структур документов выглядит так: [{1},[{2}],[{3}],[{4}]].Обновление конкретных поддокументов в MongoDB:

Ек. Документ для детей внутри документа для подкормки имеет objectId:1 и objectId:2 и objectId: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 
      } 
     ] 
    ], 
} 

]

Как обновить выше следующий subchild документ Specific _ID: ObjectId ("3") и _ID: ObjectId ("4") Ex: [{ "_id": ObjectId ("4"), "Имя": "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); 

ответ

0

child.$.Subchild.0.Name="Raghu" не нужны ссылки на первые псы массива или нужны ссылки для второго курсора child.Subchild.$.Name="Raghu" для MongodDB не обновлять ни две ссылки «$»

db.foo.update({_id:ObjectId(...),"child.Subchild.Name":"Ram"},{$set:{child.Subchild.$.Name="Raghu"}}); 
Смежные вопросы