在MongoDB中定位正确的数组元素

时间:2019-01-11 18:06:33

标签: mongodb

我需要更新一个属性,该属性是一个数组,存在于我的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
  }

没有错误。只是似乎没有按预期更新文档。我在这里想念什么吗?语法在这里应该是什么样?我希望它为“类别”属性值为“评估”的服务更新数组元素。

0 个答案:

没有答案