代码之家  ›  专栏  ›  技术社区  ›  Muirik

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

  •  0
  • Muirik  · 技术社区  · 6 年前

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

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

    0 回复  |  直到 6 年前