Mongo group分组后,怎么对分组后的结果进行从大到小排序,并取前5个

BasicDBObject key = new BasicDBObject("ip",true);
BasicDBObject initial = new BasicDBObject("count",0);
BasicDBObject cond = 。。。。
String reduce = "function(obj,prev){prev.count+=1}";
String finalize =????? 

col.group(key,initial,cond,reduce,finalize);

最后的结果,我想要count数量从大到小排列,并且只取前五个,能用finalize实现吗?具体怎么写函数呢??或者能用什么方法实现????

阅读 38.8k
2 个回答

老实说,mongo下面的group-by还是比较麻烦的。原生mongo语句,通过管道聚合查询

sqldb.term.aggregate([
     {$match:{library_id:3607}},
     {$limit:5},
     {$group:{_id:"$version", count: {$sum:1}}},
     {$sort:{count:-1}}
])

term:你要查询的集合名称
$match:匹配条件,可选
$limit:结果条数,可选
$group:聚合规则
$sort:对查询结果排序,-1表示降序

http://docs.mongoing.com/manual-zh/reference/operator/aggregation.html#aggregation-pipeline-operator-reference

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进