繁体   English   中英

如何从mongoDB aggregate()查询返回多个结果?

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

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

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

但是,如果我想返回多个值,例如原始匹配聚合中的所有文档的计数,原始匹配中的前50个文档,以及同一匹配组的字段2的唯一条目数,该怎么办?文件?

我能写出1个返回所有这些值的聚合查询吗?

你需要做两个单独的$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'
                     }
               }
         }
      },
   ]
)

暂无
暂无

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

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