2019独角兽企业重金招聘Python工程师标准>>>

Mongo 2.2.0版本介绍了mongo的聚合框架,该框架可以很方便的实现一些聚合操作,例如计数、取和、计算平均值。框架使用C++编写,支持多线程,可以很好的跨平台。下面是一个mongod java driver的一个简单的例子。


/*
* 注意聚合需要mongo版本在2.2往上,如果mongo版本比较低,会报MongoDB Java driver : no such cmd: aggregate的错误。
* 下面附上mongo官方手册:http://docs.mongodb.org/manual/contents/
* 这个地址列出了mongo支持的所有查询与聚合命令:http://docs.mongodb.org/manual/reference/operator/
* 这个地址列出了shell支持的所有函数:http://docs.mongodb.org/manual/reference/method/
*/
package com.yeetrack.mongodb.test;
import java.net.UnknownHostException;import com.mongodb.AggregationOutput;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;public class MyMongdbAggregation
{/**
* Java Driver and Aggregation Framework
* @author youthflies
* @throws UnknownHostException
* 注意聚合需要mongo版本在2.2往上,如果mongo版本比较低,会报MongoDB Java driver : no such cmd: aggregate的错误。
* 下面附上mongo官方手册:http://docs.mongodb.org/manual/contents/
* 这个地址列出了mongo支持的所有查询与聚合命令:http://docs.mongodb.org/manual/reference/operator/
* 这个地址列出了shell支持的所有函数:http://docs.mongodb.org/manual/reference/method/
*/
public static void main(String[] args) throws UnknownHostException
{
// TODO Auto-generated method stub
MongoClient mongoClient = new MongoClient("192.22.219.163", 27017);
DB db = mongoClient.getDB("mydb");
DBCollection collection = db.getCollection("expenses");// //创建数据
// String department = "Sales";
// for(int i=1;i<=15;i++)
// {
// if(i==6)
// department = "egineering";
// if(i==11)
// department = "Human";
// BasicDBObject basicDBObject = new BasicDBObject("employee", i).
// append("department", department).
// append("amount", i*2+1).
// append("type", "airfare");
// collection.insert(basicDBObject);
//
// }
//首先利$match筛选出type为airfate的行
DBObject match = new BasicDBObject("$match", new BasicDBObject("type", "airfare") );// 利用$project拼装需要的数据,包含department列、amount列和id列
DBObject fields = new BasicDBObject("department", 1);
fields.put("amount", 1);
fields.put("_id", 0);
DBObject project = new BasicDBObject("$project", fields );// 对上面的project利用group分组
DBObject groupFields = new BasicDBObject( "_id", "$department");
groupFields.put("average", new BasicDBObject( "$avg", "$amount"));
DBObject group = new BasicDBObject("$group", groupFields);// run aggregation
AggregationOutput output = collection.aggregate( match, project, group );
System.out.println(output);mongoClient.close();}}

转载于:https://my.oschina.net/u/147181/blog/164962

mongodb java driver 聚合框架相关推荐

  1. Mongodb java 例子

    该文档是翻译自文档[mongodb-docs-2010-10-24.pdf]的[Java Language Center]章节,根据自己的理解整理而成. 希望能给像我这样开始接触的朋友一点帮助,同时也 ...

  2. mongodb java 开源_开源的Mongodb java client -- mango发布

    Mango  ----   一个非常简单的操作mongodb的小工具,使用java语言,基于mongodb的java driver包. 其主要的灵感来自于Jongo 项目,这是一个非常有创意的工具,将 ...

  3. java mongo subtract_春数据MongoDB的聚合框架,例外

    组 访问计算值,我有旅行的集合,每行有一个的startDateTime和completionDateTime财产.春数据MongoDB的聚合框架,例外 我试图使用聚合框架来找到用户的出行的平均持续时间 ...

  4. mongodb 聚合框架_如何使用MongoDB的聚合框架处理高级数据处理

    mongodb 聚合框架 MongoDB has come a long way. Even though there are many NoSQL databases out there, Mong ...

  5. python 连接数据库导数_python – 使用MongoDB聚合框架计算一阶导数

    我们可以使用MongoDB 3.2或更高版本中的聚合框架来实现,因为我们真正需要的是一种跟踪数组中当前和上一个元素的索引的方法,幸运的是从MongoDB 3.2开始,我们可以使用 $unwind运算符 ...

  6. JAVA | MongoDB 去重、聚合函数、Criteria Query使用

    前言 最近项目工作中遇到mongo复杂查询的语句使用,其中使用到数据去重,分组查询. 去重 mongo中去重和sql语句一样都是使用distinct // 对时间范围内的name字段去重 db.get ...

  7. MongoDB学习总结五(详细记录MongoDB Aggregation聚合框架常见操作)

    简明:本文详细记录使用Aggregation聚合框架对MongoDB数据库常见操作,包括过滤.分组.求和.排序和分页设计实现等等.相比较于MongoTemplate,使用Aggregation对Mon ...

  8. mongodb orm java_基于Java的ORM框架 Mongodb-ORM

    软件介绍 mongodb-orm简介Mongodb ORM是基于java的ORM框架,简化了SDK的使用,使代码变得更清晰.简单. 与Ibatis类似,将查询.执行语句封装在xml中,与代码隔离.简称 ...

  9. Mongodb聚合框架Aggregate

    一 概念   1.简介     mongo aggregation是mongo的一个轻量级的map-reduce框架,可以实现一些count,sum,group by的聚合.     使用聚合框架可以 ...

最新文章

  1. 从科幻灵感开始的一场数据存储基础设施实验之旅
  2. [Spring Framework]学习笔记--Dependency injection(DI)
  3. ClickOnce部署(3):使用证书
  4. 牛客 - 红蓝图(克鲁斯卡尔重构树的dfs序上建主席树)
  5. JDK7下VisualVm插件无法链接到插件中心
  6. python调用函数获取最开始的异常_Python使用sys.exc_info()方法获取异常信息
  7. centos7安装terminator
  8. 具有多个生成器和多个判别器的GAN
  9. [转载] Java 单例(Singleton)类
  10. C语言学习笔记(5)
  11. 小程序调用豆瓣公开接口解决办法
  12. system.gc()和system.runFinalization()区别作用
  13. python输出为指定编码_Python 中文编码
  14. TensorFlow-gpu安装和测试(TensorFlow-gpu1.14+Cuda10)
  15. linux中读写执行的含义,Linux中读写执行权限的真正含义
  16. 官方rom提取原签名工具_从安卓官方版ROM中提取你喜欢的软件(单独安装包)
  17. HDU 5810(伯努利实验、多校7、规律)
  18. 二次反序列化 看我一命通关
  19. 华为的提倡大家学雷锋,绝不让雷锋吃亏
  20. 高级PHP工程师必备的编码技巧及思维(收藏)

热门文章

  1. 高频hf调制方式_收藏!AM的三种调制电路
  2. c 语言 double 除法_这是我的C语言入门笔记
  3. java如何捕获多个异常_是否可以在单个catch块中捕获多个Java异常?
  4. 我的世界连锁挖矿下载JAVA_我的世界1.7.10连锁挖矿整合包
  5. cdh用户权限_cdh设置hdfs权限
  6. lisp的vla函数画矩形_python之:tkinter画哆啦A梦
  7. 怎样用MATLAB画二次函数曲线,MATLAB 二次函数的画图.doc
  8. mysql安全权限的讲解
  9. 【php7扩展开发一】注册一个内部函数hello world
  10. javascript对页面简单的加密和解密