这是一个运行匹配的查询,然后返回特定字段中唯一条目的数量:
db.sequences.aggregate([{$match: {id: 5}}, {$group : {_id : "$field"} }, {$group: {_id:1, count: {$sum : 1 }}}])
但是,如果我想返回多个值,例如原始匹配聚合中的所有文档的计数,原始匹配中的前50个文档,以及相同的字段2的唯一条目数,该怎么办?匹配的文件集?
我是否可以编写1个返回所有这些值的聚合查询?
答案 0 :(得分:3)
您需要执行两个单独的$group
阶段。首先$group
字段filed
,然后$push
将结果文档放入数组中,同时从每个文档中累积count
,以获得总和。< / p>
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'
}
}
}
},
]
)