【发布时间】:2017-07-06 14:45:51
【问题描述】:
我在 Mongo 中有这些数据:
{'_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'}]
}
现在我想用新的 Json 数据更新 taskId 6。
var jsonData = {"taskId":6,"name":'Sumeet','newField1':'Val1','newField2':'Val2'}
如果字段可用,则查询应更新,否则将新键添加到现有的 .Output Like
{"taskId":6,parentId:3,name:'Sumeet',type:'task','newField1':'Val1','newField2':'Val2'}]
我尝试了一些查询,但它完全取代了 json 。
db.projectPlan.update({_id:1,'tasks.taskId':6},{$set :{'tasks.$':jsonData }});
提前感谢您的帮助! 苏梅特
【问题讨论】:
-
如果不可能也请提出建议。
-
这很奇怪。根据the documentation,它应该可以工作。
-
确实这个查询只会替换taskId为6的任务。它不会将现有数据与新数据合并。请参阅下面的解决方案,了解如何合并数据。
标签: javascript node.js mongodb nosql