mongodb分组查询-aggregate
程序员文章站
2024-02-20 11:42:22
...
mongodb分组查询使用记录
根据指定字段分组,并获取分组中的最新一条记录
mongo聚合查询语句如下
db.studentClass.aggregate(
[
{ "$match" : { userName: {
$in: ["小明", "小红"]
} }},
{"$sort":{time:-1}},
{ "$group" : { "_id" : "$userId","userName":{$first:"$userName"},"userSex":{$first:"$userSex"}, "totalScore":{$sum:"$score"}} }
])
说明: 其中_id为要分组的字段,可以是多个,例如
{ "$group" : { "_id" : {"userid":"$userid","userName":"$userName"} }
注:这里只是举个例子,可能数据没那么合理
基础数据如下:
_id | userId | userName | userSex | className | score | time |
---|---|---|---|---|---|---|
ljdsafhlakjsdf | 0001 | 小红 | 女 | 数学 | 80 | 2020-04-30 |
ljadsfasdfdfsaf | 0001 | 小红 | 女 | 语文 | 90 | 2020-04-30 |
ldsafdsfafdsf | 0001 | 小红 | 女 | 外语 | 92 | 2020-04-30 |
ljdadsfasdfasff | 0002 | 小明 | 男 | 数学 | 95 | 2020-04-30 |
lfasdfasdafadf | 0002 | 小明 | 男 | 语文 | 70 | 2020-04-30 |
lfasdfadafdsaafadf | 0002 | 小明 | 男 | 外语 | 80 | 2020-04-30 |
执行上述的查询语句之后得到的结果是
_id | userName | userSex | totalScore |
---|---|---|---|
0001 | 小红 | 女 | 262 |
0002 | 小明 | 男 | 245 |