mongo-db:将字符串转换为数组

时间:2017-01-10 08:17:07

标签: node.js mongodb

我有一个mongodb collection,大约有4-5百万documents。它有一个名为"role": "admin"的字段。我想要做的是将所有角色转换为数组,即"role": ["admin"]

我更喜欢not to use forEach循环。请帮我解决一下这个。我对mongodb有点新鲜。

old documents

{
  "role": "admin"
}
{
  "role": "mod"
}

new documents

{
  "role": ["admin"]
}
{
  "role": ["mod"]
}

1 个答案:

答案 0 :(得分:2)

你可以使用像这样的聚合(直接来自shell):

db.collection.aggregate([
  {$group: {
     _id: "$_id",
     role: {$push: "$role"}
    }
  },
   {$out: "newCollection"}
])

$ group阶段将生成以下结果:

{ "_id" : ObjectId("5874a728cf097894d781d7f0"), "role" : [ "mod" ] }
{ "_id" : ObjectId("5874a724cf097894d781d7ef"), "role" : [ "admin" ] }

并且$ out会将其写入特定集合(可以是新集合或现有集合)。

在使用$ out覆盖现有集合时要小心,因为您无法撤消操作

相关问题