我在
address
中有一个 basicDetails
字段值。我希望通过添加一个名为 address
的新字段将该值带入根字段,因此我尝试通过这种方式在所有文档中添加新的字段地址。但问题是该值无法更新。我认为我正确引用该值的语法是错误的。请帮我。预先感谢。
更新查询:
db.businesslistings.updateMany({},
{$set: {"address": '$attributes[0].basicDetails[1].valueString'}})
结果:
地址:“$attributes[0].basicDetails[1].valueString”
简单的更新查询无法做获取字段值等复杂查询。您需要使用聚合管道进行更新查询。
点符号(路径)不起作用,您需要如下查询:
从内到外
获取
attributes
数组的第一个元素。
获取
basicDetails
字段。
获取
basicDetails
数组的第二个元素。
获取
valueString
字段。
db.businesslistings.updateMany({},
[
{
$set: {
"address": {
$getField: {
input: {
$arrayElemAt: [
{
$getField: {
input: {
$arrayElemAt: [
"$attributes",
0
]
},
field: "basicDetails"
}
},
1
]
},
field: "valueString"
}
}
}
}
])