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
操作进行排序。