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"}}}
]
)