用java连接mongodb并执行$match和$group结合的聚合函数的实例。

1、测试类:

package test;
/** 
* @author : suyuyuan
* @date :2016年6月23日 下午3:10:03 
* @version 1.0 
*/


import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


import com.mongodb.AggregationOutput;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;


public class MongoMatch {


public static void main(String[] args) {
DBCollection collection;
try {
// 获取连接
collection = MongoUtil.getCollection();
// 查询数据
List<DBObject> ops = new ArrayList<DBObject>();
DBObject query = new BasicDBObject();
query.put("status", "A");
DBObject match = new BasicDBObject("$match", query);
ops.add(match);
DBObject group = new BasicDBObject("$group", new BasicDBObject("_id","$cust_id").append("total", new BasicDBObject("$sum","$amount")));
ops.add(group);
AggregationOutput output = collection.aggregate(ops);
Iterable<DBObject> iterable = output.results();
Iterator<DBObject> iterator = iterable.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
//以上输出方式也可以用以下方式替代更为正规:

// Cursor cursor = collection.aggregate(ops, AggregationOptions.builder().allowDiskUse(true).build());
// while(cursor.hasNext()) {
// DBObject doc = cursor.next();
// System.out.println(doc);
// }

} catch (UnknownHostException e) {
e.printStackTrace();
}
}


}


2、工具类:

package test;


import java.net.UnknownHostException;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.MongoClient;
import com.mongodb.ServerAddress;


/**
 * @author : suyuyuan
 * @date :2016年6月24日 上午10:36:28
 * @version 1.0
 */
public class MongoUtil {


private static String dbIp = "localhost";
private static int dbPort = 27017;
private static String mydb = "mongotest";
private static String table = "orders";


public static DBCollection getCollection() throws UnknownHostException {


// // 实例化Mongo对象,
// Mongo mongo = new Mongo(dbIp, dbPort);
// // 连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
// DB db = mongo.getDB(dbUser);
// // 从Mongodb中获得名为myData的数据集合,如果该数据集合不存在,Mongodb会为其新建立
// DBCollection collection = db.getCollection(table);


MongoClient mongoClient = new MongoClient(new ServerAddress(dbIp, dbPort));
DB db = mongoClient.getDB(mydb);
DBCollection collection = db.getCollection(table);


return collection;
}


}


3、maven的pom依赖:


<dependency>
<groupId>org.mongodb.morphia</groupId>
<artifactId>morphia</artifactId>
<version>1.2.0</version>
</dependency>


<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.2.2</version>
</dependency>


4、对应的NoSql如下:

db.orders.aggregate(
 [
  {$match:{status:"A"}},
  {$group:{_id:"$cust_id",total:{$sum:"$amount"}}}
 ]
 )





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值