在 MongoDB 聚合期间,我需要更新嵌套字段的值,但该字段的名称是另一个字段的值。示例文档:
{
"prop": {
"nestedField": "oldValue" // Property to be updated
},
"keyPath": "prop.nestedField", // Path to the target field using dot notation
"val": "newValue" // New value to set to target field
}
因此聚合后它应该变成:
{
"prop": {
"nestedField": "newValue" // Value has been updated
},
...
}
保证该路径存在于文档中。
我尝试使用$arrayToObject
,但对于嵌套的键路径,它将值解释为文字,并创建具有键路径的精确值(如"prop.nestedField"
)而不是嵌套对象的字段。
当然,这可以在聚合之后完成,但接下来的阶段需要使用更新的数据,所以我有兴趣在聚合内部执行此操作。
这个问题困扰了好几天,非常希望得到一些帮助