繁体   English   中英

如何将文档流聚合成一个带有数组字段的文档? (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 object(即文档)。

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

这里的例子

此外,要添加新字段,您可以使用$first into group ( example ) 或使用$set$addFields$project的新阶段,如本示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM