mongo Aggregation group

原创 2015年07月09日 16:15:43

按年/月进行统计:

db.node.aggregate([
	{$group:{
		_id: {
		    year : { $year : "$publishedDate" },        
                    month : { $month : "$publishedDate" }
		},
		count: {$sum: 1}}
	},
	{$sort: {"_id": 1}}
]);

得到如下结果:

{
        "result" : [
                {
                        "_id" : {
                                "year" : 2013,
                                "month" : 3
                        },
                        "count" : 1
                },
                {
                        "_id" : {
                                "year" : 2013,
                                "month" : 4
                        },
                        "count" : 14
                }
        ],
        "ok" : 1
}

如果只按年统计,则把条件中的月去掉即可,
db.node.aggregate([
	{$group:{
		_id: {
		    year : { $year : "$publishedDate" }
		},
		count: {$sum: 1}}
	},
	{$sort: {"_id": 1}}
]);

对符合特定条件的结果,进行分组:

db.user.aggregate([
	{ $match : { "createDate" : { $gte : new ISODate("2015-01-01T20:15:31Z") } } },
	{$group:{
		_id: {
			year : { $year : "$createDate" },        
           <span style="white-space:pre">		</span>month : { $month : "$createDate" }
		},
		count: {$sum: 1}}
	},
	{$sort: {"_id": 1}}
]);

即可对2015-01-01之后的用户进行分组统计,结果:
{
        "result" : [
                {
                        "_id" : {
                                "year" : 2015,
                                "month" : 1
                        },
                        "count" : 1
                },
                {
                        "_id" : {
                                "year" : 2015,
                                "month" : 2
                        },
                        "count" : 6
                }
        ],
        "ok" : 1
}


还有,
db.log.aggregate([
	{ $match : { action : "login" } },
	{$group:{
		_id: {
			year : { $year : "$datetime" },        
            <span style="white-space:pre">		</span>month : { $month : "$datetime" }
		},
		count: {$sum: 1}}
	},
	{$sort: {"_id": 1}}
]);


mongodb使用aggregate、group、match实现mysql中的having(count(1)>1)的功能

关系型数据库中分组去重一般都是group by … having(count(1)>1)…赛选出来重复的记录组,然后一条sql搞定,但是在mongodb里面,没有这么方便了,需要自己写脚本来实现,可...
  • mchdba
  • mchdba
  • 2016年01月04日 16:27
  • 5621

MONGODB 与sql聚合操作对应图

SQL Terms, Functions, and Concepts                                       MongoDB Aggregation Opera...
  • miyatang
  • miyatang
  • 2014年03月11日 10:25
  • 14634

MongoDB 学习笔记六 aggregate GROUP使用

语法:db.collection.aggregate([ {$match:{id:1000}}, {$limit:5}, {$group:{_id:"$version",...
  • xundh
  • xundh
  • 2015年11月11日 09:38
  • 3110

mongodb-aggregate(聚合函数)

mongodb是有自己的mapreduce的,功能很强大,性能也还好,完成了基本上所有的关系型数据库可以完成的统计工作;但是后来mongodb出现了聚合函数,尝试着代替mapreduce,下面开始介绍...
  • qq_14950717
  • qq_14950717
  • 2016年09月13日 23:46
  • 736

Spring Data MongoDB 六:进阶Aggregation操作(上)

1、db.collection.aggregate()可以多个管道,能方便的进行数据的处理。 2、db.collection.aggregate()使用了MongoDB内置的原生操作,聚合...
  • congcong68
  • congcong68
  • 2016年10月15日 09:36
  • 6662

使用MongoDB中Aggregation统计数据

{ftoc} 聚合管道(Aggregation Pipeline) 定义 聚合管道是MongoDB提供的一种数据统计框架。通过Aggregation操作,能够实现类似于SQL 中Group ...
  • loloxiaoz3
  • loloxiaoz3
  • 2013年12月29日 21:04
  • 3271

mongodb的aggregate 用法

先用一个python脚本构造一些数据,然后来演示如何使用         #coding=utf-8 ''' Created on 2015-12-28 @author: kwsy ''' imp...
  • KWSY2008
  • KWSY2008
  • 2016年07月05日 14:51
  • 2620

Mongodb中数据聚合之聚合管道aggregate

在之前的两篇文章Mongodb中数据聚合之基本聚合函数count、distinct、group >和Mongodb中数据聚合之MapReduce >中,我们已经对数据聚合提供了两种实现方式,今天,...
  • andamajing
  • andamajing
  • 2016年05月22日 11:05
  • 17481

MongoDB中group() mapReduce() aggregate()之比较

对于SQL而言,如果从users表里查询每个team所有成员的number,查询语句如下: SELECT team, no FROM users GROUP BY team ...
  • huntzw
  • huntzw
  • 2013年03月13日 19:26
  • 8085

New Aggregation Group(新聚合组)

本文根据Apache Kylin官方文档翻译 详见http://kylin.apache.org/blog/2016/02/18/new-aggregation-group/ 新聚合组(New Ag...
  • gavin_g_feng
  • gavin_g_feng
  • 2016年12月07日 00:56
  • 1103
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mongo Aggregation group
举报原因:
原因补充:

(最多只允许输入30个字)