mongodb java 框架_mongodb java driver 聚合框架

夏青青
2023-12-01

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();

}

}

 类似资料: