【发布时间】:2021-10-25 21:01:23
【问题描述】:
我正在使用 migrate-mongo 和 Node driver for Mongo 编写迁移,它们的文档都不太好。我正在尝试获取一个字段并将其进一步嵌套一层。以下是原始结构的示例:
{
"_id": {"$oid":"xxxxxxxx"},
"module": "lalala",
"settings": {
"yAxis": {
"title": {
"text": "TITLE"
}
}
}
我想获取 yAxis 字段及其内容并将其嵌套在“highcharts”字段下,因此最终结果如下:
"settings": {
"highcharts": {
"yAxis": {
"title": {
"text": "TITLE"
}
}
}
}
我看到了这个Update field with value from a nested field,并希望我可以使用 $ 运算符来获取 yAxis 内容并将它们重新插入,但这不起作用。 (yAxis 字段现在只读取字符串文字 '$settings.yAxis')
async up(db) {
const panels = db.collection('panels');
await panels.updateMany({module: 'lalala'},
{$set: {'settings.highcharts.yAxis': '$settings.yAxis'}});
await panels.updateMany({module: 'lalala'},
{$unset: {'settings.yAxis': ''}});
我还想也许我应该遍历文档,将它们解析为 JSON 并获取 yAxis 的内容,然后将其插入到新的“highcharts”字段中,但这是在 forEach 中使用 await,它不起作用。
理想情况下,我正在执行此异步操作,以便我可以在一次迁移中执行多个操作。否则,我将不得不在一次迁移中设置新的“highcharts”字段,并在另一次迁移中取消设置旧的“yAxis”,如果一个失败但另一个没有,这可能会导致问题。
有点卡在这里,任何帮助。谢谢!
【问题讨论】:
标签: javascript node.js mongodb migrate-mongo