使用下面的查询能够根据条件设置 status.id,status.name 。但是同时,我需要更新里程碑数组中某个里程碑的里程碑completedDate,该里程碑数组在同一文档中的里程碑ID为-1。
db.collection.findOneAndUpdate({ formData: { $elemMatch: { value: todayDate } } }, { $set: { 'status.id': -1, 'status.name': 'Closed' } }, { multi: true }, function (err, result) {
});
示例文档:
{
"_id" : ObjectId("5e7defd5cb90e73710d0a9de"),
"status" : {
"id" : NumberInt("-2"),
"name" : "SR_EXECUTION STARTED"
},
"milestone" : [
{
"milestoneID" : NumberInt("-1"),
"completedDate": ????
},
{
"milestoneID" : NumberInt("0")
"currentMilestone" : false
},
{
"milestoneID" : NumberInt("-2"),
"currentMilestone" : false
}
],
"cost" : NumberInt("0"),
"formData" : [
{
"label" : "Name",
"value" : "Test"
},
{
"label" : "Description",
"value" : "test"
},
{
"label" : "Start Date",
"value" : "2020-Mar-27"
},
{
"label" : "End Date",
"value" : "2020-Apr-30"
}
]
}