我有一个像 . 的集合文档。
现在我想要更新JSON中多个数组元素字段“status”为“已删除”。假设对于taskId 3,4,我需要将状态更新为“已删除”。我尝试使用$in和query($)进行查询,但它只会更新$in数组中的第一个元素。在下面的查询中,只有taskId为3的元素被更新,而不是4。
如何在单个查询中更新多个元素。谢谢!
{'_id':1,
'name':'Root',
'taskId':1,
'parentId':"",
'path':[1],
'tasks':[ {"taskId":3,parentId:1,name:'A',status:'Created'},
{"taskId":4,parentId:1,name:'D',status:'Created'},
{"taskId":5,parentId:4,name:'B',status:'Created'},
{'type':'project' , 'proRef':2},
{"taskId":6,parentId:3,name:'E',status:'Started'},
{"taskId":7,parentId:6,name:'C',status:'Stopped'}]
}
现在我想要更新JSON中多个数组元素字段“status”为“已删除”。假设对于taskId 3,4,我需要将状态更新为“已删除”。我尝试使用$in和query($)进行查询,但它只会更新$in数组中的第一个元素。在下面的查询中,只有taskId为3的元素被更新,而不是4。
db.projectPlan.update({"_id": 1,'tasks.taskId': {$in :[3,4]}} , {$set: {'tasks.$.status': 'Deleted'}}, {upsert: false, multi: true});
如何在单个查询中更新多个元素。谢谢!