У меня есть эти данные в Монго:обновление MongoDB на JSON массива
{'_id':1,
'name':'Root',
'taskId':1,
'parentId':"",
'path':[1],
'tasks':[ {"taskId":3,parentId:1,name:'A',type:'task'},
{"taskId":4,parentId:1,name:'D',type:'task'},
{"taskId":5,parentId:4,name:'B',type:'task'},
{'type':'project' , 'proRef':2},
{"taskId":6,parentId:3,name:'E',type:'task'},
{"taskId":7,parentId:6,name:'C',type:'task'}]
}
Теперь я хочу, чтобы обновить TaskId 6 новыми данными JSON.
var jsonData = {"taskId":6,"name":'Sumeet','newField1':'Val1','newField2':'Val2'}
запрос должен обновить, если поле доступно еще добавить новый ключ к существующему .Output Как
{"taskId":6,parentId:3,name:'Sumeet',type:'task','newField1':'Val1','newField2':'Val2'}]
Я попытался несколько запросов, но полностью заменить JSON.
db.projectPlan.update({_id:1,'tasks.taskId':6},{$set :{'tasks.$':jsonData }});
Заранее благодарим за помощь! Sumeet
Пожалуйста, укажите, если это не представляется возможным также. – Sumeet
Это странно. Согласно [документации] (http://docs.mongodb.org/manual/reference/method/db.collection.update/#update-an-element-if-position-is-unknown), он должен работать. – Philipp
Действительно, этот запрос заменит задачу только taskId 6. Он не объединит существующие данные с новыми данными. Ниже приведено мое решение о том, как можно объединить данные. – user152468