做排行,想取每个班级(level)里积分最高的人,各取1个。
数据表如图:
结果应该为:
我使用的代码为:
function onRequest(request, response, modules) {
//获取数据库对象
var db = modules.oData;
//黑坑1
db.find({
"table":"test",
"limit":2,
//"count":10,
"order":"score",
"score":{'$in':[1,2]},
"keys":"name,level,score",
// "where":{}
"count":4
},function(err,data){
// level1Dat=data;
var dataI=JSON.parse(data);
response.send(dataI);
}
);
}
得到的错误结果为:
{
"count": 8,
"results": [
{
"createdAt": "2017-03-29 23:35:32",
"level": "2",
"name": "王王",
"objectId": "ygjV555B",
"score": "10",
"updatedAt": "2017-03-29 23:52:46"
},
{
"createdAt": "2017-03-29 23:33:38",
"level": "1",
"name": "小明",
"objectId": "nB0sLLLc",
"score": "100",
"updatedAt": "2017-03-29 23:35:52"
}
]
}
新手小白,查了一天的分组和聚合,越看越糊涂,求大神帮忙指点,谢谢
不知道你想要的形式是怎么样的,所以随便写了一下,形式上可以自己再转换。另外也没有给测试数据,以下脚本没有测试过,自己调试一下。
关于Aggregation Frameworks的话题太大了没法在这里讲。请查找相关的介绍看一下。这里用到了其中几个运算符:$sort, $group, $first。