mongoose 更新嵌套数组值mongo

wgmfuz8q  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(182)

大家好,正在为这个更新而挣扎的人们,任何人都可以在这里提供帮助

"sheet_types": [
    {
      "areas": [
        "FRONT",
        "SIDE",
        "UPPER"
      ]
    }
  ]
}

我需要在此处将UPPER的值更新为TOP
我已尝试过此查询

db.company_settings.updateOne(
   {"sheet_types.areas": "UPPER" },
   { $set: {   "sheet_types.$.areas" : "TOP" } })

但我得到的结果是

{
  "sheet_types": [
    {
      "areas": [
        "TOP"
      ]
    }
  ]
}
lrl1mhuk

lrl1mhuk1#

使用“arrayFilters”似乎最适合此用例:

db.collection.update({},
  {
   "$set": {
     "sheet_types.$[].areas.$[filter]": "TOP"
   }
  },
  {
  "arrayFilters": [
     {
       "filter": "UPPER"
     }
   ]
 })

解释道:
添加arrayFIlter,其中一个筛选器元素等于需要替换的值,使用此筛选器替换update语句中的值。此选项的优点是它将替换文档中与筛选条件匹配的所有匹配值。
playground

相关问题