一次更新多个文档的嵌套数组字段
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"
},
]
}
]
}
有 arrayFilters
和 filtered $[<identifier>]
operator。
db.collection.update({},
{
$set: {
"History.$[].dev.$[dev].floor": ""
}
},
{
arrayFilters: [
{
"dev.floor": "n/a"
}
],
multi: true
})
我在以下结构的集合中有大量记录。
这里我想将所有 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"
},
]
}
]
}
有 arrayFilters
和 filtered $[<identifier>]
operator。
db.collection.update({},
{
$set: {
"History.$[].dev.$[dev].floor": ""
}
},
{
arrayFilters: [
{
"dev.floor": "n/a"
}
],
multi: true
})