mongodb java driver集約フレームワーク


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

}

}