我有一个mongodb集合如下: {color:'blue',类别:'A',.....} {color:'yellow',category:'A',....} {color:'blue',类别:'B',......} ... ....
像这样的查询: db.collection.aggregate([{$ match:{color:'blue'}},{$ group:{_ id:“$ category”,num:{$ sum:1}}}])
返回颜色的文档数:每个类别的“蓝色”。
现在,我想在同一个聚合查询中获取每个类别中的文档总数。这样可以避免在非常大的数据库上对mongodb服务器进行额外的查询。因为它是第一个查询需要花费几分钟才能完成。添加另一个查询几乎会复制数据库服务器的工作(再次分组和计数),因此需要更长的时间。 这可能吗?
如果没有,是否有单个API调用在指定的键字段上合并两个AggregationOutput结果?
感谢。
答案 0 :(得分:0)
以下是如何操作:
db.collection.aggregate([{$group:{_id:"$category",
num:{$sum:1},
blues:{$sum:{$cond:[{$eq:["$color","blue"]}, 1, 0]}}
}}]