您如何从 mongoDB aggregate() 查询中 return 获得多个结果?

How do you return multiple results from a mongoDB aggregate() query?

这是一个运行匹配的查询,然后 returns 特定字段中唯一条目的数量:

db.sequences.aggregate([{$match: {id: 5}}, {$group : {_id : "$field"} }, {$group: {_id:1, count: {$sum : 1 }}}])

但是,如果我想要 return 多个值,例如原始匹配聚合中所有文档的计数、原始匹配中的前 50 个文档以及唯一条目的数量,该怎么办相同匹配文档集的 field2 的?

我能否编写 1 个 return所有这些值的聚合查询?

您需要进行两个单独的 $group 阶段。先$groupfiled字段,然后$push将得到的文档放入一个数组中,同时从每个文档中累加count,得到总和。

db.sequences.aggregate(
   [
      {$match: {id: 5}}, 
      {$group : 
         {
            _id : "$field", 
            count: {$sum: 1}
         }
      },
      {$group : 
         {
            _id : null, 
            totalNumberOfMatches: {$sum: '$count'},
            totalNumberOfUniqueMatches: {$sum: 1},
            uniqueMatchesField:
               {
                  $push:
                     {
                        field: '$_id',
                        count: '$count'
                     }
               }
         }
      },
   ]
)