最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

[Mongo]分组统计时间aggregate,group,distinct

来源:动视网 责编:小采 时间:2020-11-09 14:40:59
文档

[Mongo]分组统计时间aggregate,group,distinct

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


开发中有些按日期记录的记录需要各种维度的统计,按天,按月,按年,按小时,。分组统计,还有些需要对字段去重统计,在之前的 [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

文档

[Mongo]分组统计时间aggregate,group,distinct

[Mongo]分组统计时间aggregate,group,distinct:开发中有些按日期记录的记录需要各种维度的统计,按天,按月,按年,按小时。分组统计,还有些需要对字段去重统计,在之前的 [Mongo] 按时间分组统计(group时间格式化) 中用group实现了按天的统计,不过使用new Date()方法会有些坑,今天看了下agg
推荐度:
标签: 查询 分组 时间
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top