一次更新多个文档的嵌套数组字段

Update nested array field for multiple docs at once

我在以下结构的集合中有大量记录。

这里我想将所有 floor 字段更新为空字符串 "",无论它是“n/a”。它不应该影响其他已经有价值的块,如一楼、二楼。

有人可以帮忙吗?

{
    "id" : "181",
    "EID" : "83",
    "History" : [ 
        {
            "aNum" : "12324",
            "dev" : [ 
                {
                    "type" : "",
                    "room" : "Office",
                    "floor" : "Second Floor"
                }, 
                {
                    "type" : "",
                    "room" : "Bedroom",
                    "floor" : "n/a"
                },
                {
                    "type" : "",
                    "room" : "Bedroom",
                    "floor" : "First Floor"
                },
                {
                    "type" : "",
                    "room" : "Bedroom",
                    "floor" : "n/a"
                },
            ]
        }
    ]
}

arrayFiltersfiltered $[<identifier>] operator

db.collection.update({},
{
  $set: {
    "History.$[].dev.$[dev].floor": ""
  }
},
{
  arrayFilters: [
    {
      "dev.floor": "n/a"
    }
  ],
  multi: true
})

Sample Mongo Playground