mongodb分组查询,取各班第1名

做排行,想取每个班级(level)里积分最高的人,各取1个。
数据表如图:

https://img4.mukewang.com/5c04d6e900017c6105590306.jpg

结果应该为:

https://img4.mukewang.com/5c04d6f70001a7e505920304.jpg

我使用的代码为:

https://img4.mukewang.com/5c04d70a0001b3bc05880536.jpg

得到的错误结果为:

https://img4.mukewang.com/5c04d71600015f0904830530.jpg

新手小白,查了一天的分组和聚合,越看越糊涂,求大神帮忙指点,谢谢

慕雪6442864
浏览 990回答 1
1回答

喵喵时光机

不知道你想要的形式是怎么样的,所以随便写了一下,形式上可以自己再转换。另外也没有给测试数据,以下脚本没有测试过,自己调试一下。db.collection("test").aggregate([    // {$match: ...} 如果有条件的话    {$sort: {level: 1, score: -1},    {$group: {_id: "$level", student: "$first"}}]).toArray(function(err, data) {    // ...});关于Aggregation Frameworks的话题太大了没法在这里讲。请查找相关的介绍看一下。这里用到了其中几个运算符:$sort, $group, $first。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript