我需要更新一个属性,该属性是一个数组,存在于我的MongoDB集合中另一个数组中。现在,这有效:
{
"_id": request.parameters.id
},
{
$set: { "services.2.history": historyArray }
},
{
new: true
}
...但是我不想相信我要定位的元素将始终位于位置2
中。我确实知道目标元素中属性的值,但是:
{
_id: <value>,
category: 'evaluation', // I know the correct array element has this value
startDate: <date>
}
也就是说,有没有一种方法可以使用services
和$[]
在此处传递该值,以便在arrayFilters
中定位正确的数组元素?
我尝试了这个,但是没有用:
{
_id: request.parameters.id
},
{
$set: { "services.$[element].history": historyArray }
},
{ arrayFilters: [{ element: { "$services.category": targetService.category } }] },
{
new: true
}
没有错误。只是似乎没有按预期更新文档。我在这里想念什么吗?语法在这里应该是什么样?我希望它为“类别”属性值为“评估”的服务更新数组元素。