MongoDB中的$group聚合操作与$count计数操作可以搭配使用,以实现分组统计数据的目的。这里的$group操作与SQL中的GROUP BY语句非常相似,可以将数据按照指定的字段分组,然后对分组后的结果进行计数操作。
具体来说,$group操作可以接收一个对象作为参数,该对象的属性值分别表示要按哪些字段进行分组,以及对分组后的结果如何进行聚合计算。其中,$count操作可用于对每个分组中的文档数量进行计数。
使用示例:
db.sales.aggregate([
{ $group: { _id: "$product", count: { $sum: 1 } } }
])
上述语句表示对集合中的sales文档按照product字段进行分组,然后统计每组中的文档数量,并将结果保存在新的count字段中。其中,$sum操作是求和聚合操作,用于统计每组中文档数量的和。
下面给出另一个使用示例:
db.orders.aggregate([
{ $group: { _id: "$customer", totalSpent: { $sum: "$price" } } }
])
上述语句表示对集合中的orders文档按照customer字段进行分组,然后统计每组中price字段的数值之和,并将结果保存在新的totalSpent字段中,以反映每个客户的消费总额。
在实际使用过程中,还可以结合$match操作和$sort操作对原始文档集合进行筛选和排序,进一步优化计算效率。另外,需要注意的是,$group操作的输入必须是排过序的文档集合,因此在使用前需要通过$sort操作进行排序。