如何将文档流聚合成一个带有数组字段的文档? (mongodb)

How to aggregate documents flow into a single document with an array field? (mongodb)

我有这个数据集:

[
  { 
    userId: 1,
    nickname: 'a'
  },
  { 
    userId: 2,
    nickname: 'b'
  },
  { 
    userId: 3,
    nickname: 'c'
  },
  ...
]

我想使用聚合来实现这种形式:

{
  newField: 123456,
  users: [
    { 
      userId: 1,
      nickname: 'a'
    },
    { 
      userId: 2,
      nickname: 'b'
    },
    { 
      userId: 3,
      nickname: 'c'
    },
    ...
  ],
}

文档流合并到单个文档内的单个数组字段中,我想向其中添加一些额外的字段。在聚合管道中的第 n 个阶段后检索初始数据集。

考虑到所有这些:
下一阶段应该是什么?
这里需要 $group 吗?
我的下一个舞台应该是什么样子?

db.users.aggregate([
  ...,
  { $whatStage: <what do I do inside of it...> }
])

如果我没理解错你可以试试这个查询:

null 分组可确保所有值都已分组。 $push $$ROOT 对象(即文档)。

db.collection.aggregate([
  {
    "$group": {
      "_id": null,
      "users": {
        "$push": "$$ROOT"
      }
    }
  }
])

示例here

此外,要添加新字段,您可以使用 $first 到组 (example) or a new stage with $set, $addFields or $project like this example