猫鼬:查找和更新多个嵌套文档

时间:2020-11-09 06:59:37

标签: node.js database mongodb mongoose

我的文档如下。

{
    "order_id" : "1",
    "payment_status" : false,
    "items" : [
        {
            "item_id" : 1,
            "payment_status" : false,
        },
        {
            "item_id" : 2,
            "payment_status" : false,
        },
        {
            "item_id" : 3,
            "payment_status" : false,
        },
    ]
}

我需要为payment_status{"order_id":1}{"item_id" : 1}更新字段{"item_id" : 3}。另外,我需要批量更新相同内容以匹配条件。猫鼬有可能吗?

1 个答案:

答案 0 :(得分:1)

您想像这样使用$arrayFilters

db.collection.updateMany({
  "order_id": "1"
},
{
  "$set": {
    "items.$[item].payment_status": true
  }
},
{
  arrayFilters: [
    {
      "item.item_id": {
        $in: [
          1,
          3
        ]
      }
    }
  ]
})

Mongo Playground