【发布时间】:2021-07-21 21:50:05
【问题描述】:
我对 MongoDB 非常陌生,我需要对我的集合进行一些复杂的更新操作。
我有这样的收藏:
[
{
"Id": 1,
"extension": [
{
"keyName": "Name",
"value": "Bob"
},
{
"keyAge": "Age",
"value": 20
}
]
},
{
"Id": 2,
"extension": [
{
"keyName": "Name",
"value": "Sam"
},
{
"key": "Name",
"value": "Sam"
}
]
},
{
"Id": 3,
"extension": [
{
"keyName": "Age",
"value": 25
},
{
"key": "Age",
"value": 25
}
]
},
{
"Id": 4
}
]
我想更新所有文档的 extension 数组中的任何项目
这样当找到具有key 属性的项目时,将其重命名为keyAge。
这是预期的结果:
[
{
"Id": 1,
"extension": [
{
"keyName": "Name",
"value": "Bob"
},
{
"keyAge": "Age",
"value": 20
}
]
},
{
"Id": 2,
"extension": [
{
"keyName": "Name",
"value": "Sam"
},
{
"keyAge": "Name",
"value": "Sam"
}
]
},
{
"Id": 3,
"extension": [
{
"keyName": "Age",
"value": 25
},
{
"keyAge": "Age",
"value": 25
}
]
},
{
"Id": 4
}
]
我尝试以与此问题类似的方式使用$rename:
MongoDB rename database field within array
但我得到同样的错误$rename source may not be dynamic array
我认为这个解决方案也可能适用于我,我尝试使用它,但它没有更新我这边的任何内容,所以我想我无法理解如何将这个答案应用于我...... https://stackoverflow.com/a/49193743/215553
感谢您的帮助!
【问题讨论】:
标签: node.js mongodb mongodb-query aggregation-framework