mongo 分组 aggregation

公司私用mongodb做后台存储,可能是图它的无结构,速度快,不过在我实际使用中,速度和mysql相比确实会快点
不过需要分组聚合等查询的时候稍显麻烦,相比mysql而言,最近要做这方面的操作,就调研了下。

sql和mongo聚合查询关键字对应

sql 关键字 mongo aggregation关键字
where $match
group by $group
having $match
select … $project
order by $sort
limit $limit
sum $sum
count $sum
join $lookup
avg $avg
min $min
max $max

文档结构如下:
查 收到礼物(幸运魔方)数量最多的前五名主播在这里插入图片描述
sql语句编写应该这样:

SELECT
	receiveUid,
	receiveUname,
	sum( number ) number 
FROM
	giftRecord 
WHERE
	giftName = '幸运魔方' 
GROUP BY
	receiveUid,
	receiveUname 
ORDER BY
	number DESC 
	LIMIT 5

mongo 聚合操作如下:
在这里插入图片描述
需要注意分组里面_id字段是必须有 是分组字段,我这里根据收礼人id分组 所以是receiveUid,另外receiveUname也需要查询,因为要查出来

如果使用spring-data-mongo操作就会更加清晰
在这里插入图片描述

更多mongo aggregation操作参见官方文档
https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/

原文地址:https://www.cnblogs.com/paper-man/p/13284596.html