我有一個類似的集合文檔。Mongodb - 更新JSON數組內的多個數組元素
{'_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。讓我們假設的TaskID 3,4我需要更新狀態已刪除。我已經用$ in查詢了這個查詢($),但是它只是更新了第一個元素$ in數組。在下面的查詢中,只有taskId與3更新不是4.
db.projectPlan.update({"_id": 1,'tasks.taskId': {$in :[3,4]}} , {$set: {'tasks.$.status': 'Deleted'}}, {upsert: false, multi: true});
如何更新單個查詢中的多個元素。
在@Gergo的回答概括這是不可能的。您的模式建議您查看某種項目管理/計劃工具,在這種情況下,您可能希望將任務分配到單獨的集合中,而不管您希望單獨查詢任務的許多用例(任務分配給人員X,分配給狀態Y等) –