簡體   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