group by 查询 不要用java驱动带的group by ,要用2.2版本后的aggregate聚合框架来搞,经过试验速度快一倍

参考

官网:http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/
实例:http://www.yeetrack.com/?p=649

观看例子前,请先看上面对的2个参考文档,特别是官网的

例子

    1. // 首先利$match筛选出where条件
    2. BasicDBObject[] array = {
    3. new BasicDBObject("startTimeLong", new BasicDBObject("$gte",beginTime)),
    4. new BasicDBObject("startTimeLong", new BasicDBObject("$lt",endTime)) };
    5. BasicDBObject cond = new BasicDBObject();
    6. cond.put("$and", array);
    7. DBObject match = new BasicDBObject("$match", cond);
    8. // 利用$project拼装group需要的数据,包含optCode列、processTime列
    9. DBObject fields = new BasicDBObject("optCode", 1); // 接口
    10. fields.put("processTime", 1);// 耗时
    11. fields.put("provinceCode", 1);// 省份
    12. fields.put("channelSubCode", 1);// 渠道
    13. fields.put("platFormCode", 1);// 平台
    14. DBObject project = new BasicDBObject("$project", fields);
    15. // 利用$group进行分组
    16. DBObject _group = new BasicDBObject("provinceCode", "$provinceCode");
    17. _group.put("channelSubCode", "$channelSubCode");
    18. _group.put("platFormCode", "$platFormCode");
    19. _group.put("optCode", "$optCode");
    20. DBObject groupFields = new BasicDBObject("_id", _group);
    21. //总数
    22. groupFields.put("count", new BasicDBObject("$sum", 1));
    23. //求和
    24. groupFields.put("processTime_sum", new BasicDBObject("$sum","$processTime"));
    25. DBObject group = new BasicDBObject("$group", groupFields);
    26. AggregationOutput output = MongodbUtil.getLogInfoCollection().aggregate(match, project, group);

mongodb的高级操作(聚合框架)的更多相关文章

  1. SpringMVC整合Mongodb开发,高级操作

    开发环境: 操作系统:windows xpMongodb:2.0.6依 赖 包:Spring3.2.2 + spring-data-mongodb-1.3.0 + Spring-data-1.5 +  ...

  2. MongoDB之三(高级操作 聚合、游标)

    一: 聚合 常见的聚合操作跟sql server一样,有:count,distinct,group,mapReduce. <1> count count是最简单,最容易,也是最常用的聚合工 ...

  3. MongoDB三-高级操作

    复制来自:http://www.cnblogs.com/huangxincheng/archive/2012/02/21/2361205.html 今天跟大家分享一下mongodb中比较好玩的知识,主 ...

  4. mongodb数据库高级操作

    1.创建索引 2.索引名称 3.其他索引 4.explain 5.操作索引 6.高级特性 7.固定集合 8.导入导出 9.上锁 10.添加用户 11.主从复制

  5. MongoDB学习--高级查询 [聚合Group]

    Group大约需要一下几个参数. key:用来分组文档的字段.和keyf两者必须有一个 keyf:可以接受一个javascript函数.用来动态的确定分组文档的字段.和key两者必须有一个 initi ...

  6. mongodb高级操作及在Java企业级开发中的应用

    Java连接mongoDB Java连接MongoDB需要驱动包,个人所用包为mongo-2.10.0.jar.可以在网上下载最新版本. package org.dennisit.mongodb.st ...

  7. MongoDB高级操作

    参考MongoDB菜鸟教程 一.$type操作符 MongoDB 中可以使用的类型如下表所示: 类型 数字 备注 Double 1   String 2   Object 3   Array 4   ...

  8. 7.MongoDB系列之聚合框架

    1. 管道阶段和可调参数 聚合框架基于管道的概念.他由多个阶段组成,每个阶段都会提供一组按钮或可调参数.每个阶段对其输入执行不同的数据处理任务,并生成文档已作为输出传递到下一阶段. 2. 阶段常见操作 ...

  9. 基于Mongodb的轻量级领域驱动框架(序)

    混园子也有些年头了,从各个大牛那儿学了很多东西.技术这东西和中国的料理一样,其中技巧和经验,代代相传(这不是舌尖上的中国广告).转身回头一望,几年来自己也积累了一些东西,五花八门涉猎到各种方向,今日开 ...

随机推荐

  1. 深入研究java.lang.ProcessBuilder类

     深入研究java.lang.ProcessBuilder类 一.概述       ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它 ...

  2. hex(x) 将整数x转换为16进制字符串

    >>> a = 122 >>> b = 344 >>> c = hex(a) >>> d = hex(b) >>&g ...

  3. hdu 3715

    一个很简单的2-sat的题: 不过比较难想到: 其实也不是很难,可能接触的少了吧! #include<cstdio> #include<vector> #define maxn ...

  4. 服务器监控之 ping 监控

    在运维人员的日常工作中,对物理服务器的监控十分重要.物理机的 CPU.内存.磁盘使用率,网卡流量,磁盘 IO 等都需要进行监控.通过 ICMP 协议的 ping 监控,可以判断物理服务器运行是否正常或 ...

  5. 排序算法-冒泡排序(Bubble Sort)

    package com.wangzhu.sort; /** * 冒泡排序算法 * @ClassName: BubbleSort * @Description: TODO * @author wangz ...

  6. Linux回收站[改写rm防止误删文件无法恢复]

    http://blog.csdn.net/wklken/article/details/6898590

  7. RxJava开发精要5 – Observables变换

    原文出自<RxJava Essentials> 原文作者 : Ivan Morgillo 译文出自 : 开发技术前线 www.devtf.cn 转载声明: 本译文已授权开发者头条享有独家转 ...

  8. springboot 配置多数据源

    1.首先在创建应用对象时引入autoConfig package com; import org.springframework.boot.SpringApplication; import org. ...

  9. Form - CHECKBOX全选功能

    FORM BUILDER开发,遇到这样一个需求: 添加一个CHECKBOX完成全选功能,红框为新添加的CHECKBOX(如图示) Try to use APP_RECORD.FOR_ALL_RECOR ...

  10. win2003+IIS6+PHP5.3.8+MSSQL2008的安装配置