问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-05-06 16:04

我来回答

2个回答

懂视网 时间:2022-05-06 20:25

开发中有些按日期记录的记录需要各种维度的统计,按天,按月,按年,按小时,。。分组统计,还有些需要对字段去重统计,在之前的 [Mongo] 按时间分组统计(group时间格式化) 中用group实现了按天的统计,不过使用new Date()方法会有些坑,今天看了下aggreg

开发中有些按日期记录的记录需要各种维度的统计,按天,按月,按年,按小时,。。分组统计,还有些需要对字段去重统计,在之前的 [Mongo] 按时间分组统计(group时间格式化) 中用group实现了按天的统计,不过使用new Date()方法会有些坑,今天看了下aggregate中,使用聚合来写个时间统计。

tips: aggregate 挺复杂,弄明白了再做笔记,现在只是根据需求来查询。

数据结构还是:
/* 0 */
{
 "_id" : ObjectId("541fcc51c6c36038bc6b81cd"),
 "url" : "http://wifi21.com/",
 "addtime" : ISODate("2014-08-19T00:15:02Z")
}

/* 1 */
{
 "_id" : ObjectId("541fcc51c6c36038bc6b81ce"),
 "url" : "http://meiwen.me/src/index.html",
 "addtime" : ISODate("2014-08-19T00:15:07Z")
}
...
按月统计pv值(相当于group)
db.msds_accessrecord.aggregate([
 {$group: {
 _id: {
  "$month": "$addtime"
 }, 
 pv: {$sum: 1}}
 },
 {$sort: {"_id": 1}}
]);

统计结果

/* 0 */
{
 "result" : [ 
 {
  "_id" : 8,
  "pv" : 583
 }, 
 {
  "_id" : 9,
  "pv" : 1399
 }
 ],
 "ok" : 1
} 

按月统计url值,重复url去掉,这里只是做个演示,可能统计没什么意义 (相当于group+distinct)

db.msds_accessrecord.aggregate([
 {$group: {
 _id: {
  "month": {"$month": "$addtime"},
  "url": "$url"
 }
 }},
 {$group: {_id:"$_id.month", uv: {$sum: 1}}},
 {$sort: {"_id":1}}
]);
这里用到了管道,排序,聚合

统计结果

/* 0 */
{
 "result" : [ 
 {
  "_id" : 8,
  "uv" : 41
 }, 
 {
  "_id" : 9,
  "uv" : 134
 }
 ],
 "ok" : 1
}

引用:

聚合使用方法: http://docs.mongodb.org/manual/reference/method/db.collection.aggregate/#db.collection.aggregate

日期聚合函数: http://docs.mongodb.org/manual/reference/operator/aggregation-date/

本文出自 “orangleliu笔记本” 博客,请务必保留此出处http://blog.csdn.net/orangleliu/article/details/39932081

热心网友 时间:2022-05-06 17:33

可以使用 {$group:{_id:"$_id","defaults":{$push:"$name"}}},{$sort:{name:1}}{$limit:5}

 

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
沙尘暴属于自然灾害吗 星配什么字好听男孩 女孩带星字叫什么名字好听又洋气 带星字优美人名 星字如何取名 带星字的名活泼的 非常潮流的星字名 成华区社保局地址 有什么平价又好用的防晒霜值得安利? 有哪些性价比比较高的物理防晒霜可以安利? 想当网络工程师,应该学什么专业? 菊苣栀子茯苓青钱柳葛根一起煮的功效? 柚子皮泡脚刺激皮肤能继续泡吗 萝卜焖驴肠的做法 萝卜焖驴肠怎么做好吃 家里是开香烛店的,就是卖烧给死人的纸钱蜡烛用品,从小到大一直被人笑,你们听到认识的人家里开这种店, 别人要去坟山用的纸钱香烛拿到我家里来了怎么办 为什么互相没关注的人会出现在我的私信列表里啊? sql语句如何查询私信列表 五角钱的干脆面能泡着吃么 ?? 奥尔良鸡翅味干脆面能泡着吃吗 杭州人才认定中级会计师算吗? 干脆面能不能泡着吃,方便面能不能直接干吃? 干脆面能泡这吃么? 以“团队精神”.“合作”为话题写一篇议论文,800字。急用。 什么类行游戏适合女生玩可以结婚的好玩游戏啊? 以合作为话题的记叙文作文800字 可以恋爱结婚的网游适合女生玩的 为什么干脆面不可以泡着吃? 上面一个笛子的笛下面是一横一撇一竖是什么字啊? 1983版熊猫金币价格 关于论文查重! 大学生毕业论文,今天我论文查重查重率很高,我发现都是一些专业性名词解释重复了,请问怎么办?怎么样才 广西钦州浦北县有没有一个叫招大的货运物流部,? 广西浦北航宇物流电话是多少 浦北张黄有什么快递,物流 浦北张黄有什么快递站点? 请问广西壮族自治区钦州市浦北县有哪些快递? 现在浦北有几家快递??分别号码是??? 浦北县的顺丰快递在哪个地方 广西浦北寄快递到桂林要多久 广西浦北北通县有顺丰快递吗?有其他快递到吗? 浦北有韵达快递吗,有的话详细地址在哪里? 浦北有顺风快递没?急急急 百世快递从广州到广西钦州浦北有几个站点? 广西钦州浦北寄40斤到东莞清溪镇顺丰快递多少钱? 钦州浦北龙门京东快递位置在哪里? 为什么广西梧州到浦北县的快递都要经过南宁? 什么快递能送到广西钦州市浦北县乐民镇 广州顺丰快递到浦北县城要多少天能到货 健盘数字不能输入