MongoDB:如何将对象字段转换为该对象的数组字段

jaql4c8m  于 2023-03-01  发布在  Go
关注(0)|答案(1)|浏览(204)

我正试图将一个对象字段转换成包含该对象的数组。将planner对象移除一层并将其放入planner数组:

"planner": {
    "code": "12345",
    "name": "Person"
  } 
->
  "planners": [
    {
      "code": "12345",
      "name": "Person"
    }
  ]

应该能够创建一个名为planner的新数组字段,然后删除旧的planner对象字段。尝试找出使用另一个对象字段的现有属性创建此新数组字段的语法。尝试类似于以下内容:

db.example.find({ }).forEach(function(a) {
    a.planners = [
        {
            "code": a.planner.code,
            "name": a.planner.name
        }
    ]
    db.example.save(a)
})

最后以移除

db.example.updateMany(
   { },
   { $unset: { planner: "" } }
)

这只是在执行时返回undefined.有什么建议吗?

ioekq8ef

ioekq8ef1#

使用MongoDB v4.2+,您只需使用一个数组 Package $setplanner

db.collection.update({},
[
  {
    $set: {
      planner: [
        "$planner"
      ]
    }
  }
],
{
  multi: true
})

Mongo Playground

相关问题