List<DBObject> jsonlist = new ArrayList<DBObject>();
// 查询条件
BasicDBObject matchFields = new BasicDBObject();
matchFields.put("mvnoId", new BasicDBObject("$eq", arg1));
matchFields.put("orgId", new BasicDBObject("$eq", arg2));
matchFields.put("country", new BasicDBObject("$eq", country));
// 分组
BasicDBObject groupFields = new BasicDBObject();
Map<String, String> properties = new HashMap<String, String>();
properties.put("country", "$country");
groupFields.put("_id", properties);
groupFields.put("testType", new BasicDBObject("$max", "$testType"));
groupFields.put("age", new BasicDBObject("$sum", "$age"));
BasicDBObject group = new BasicDBObject();
group.put("$group", groupFields);
jsonlist.add(group);
// 输出列
BasicDBObject projectFields = new BasicDBObject();
projectFields.put("country", "$_id.country");
projectFields.put("testType", "$testType");
projectFields.put("age", "$age");
BasicDBObject project = new BasicDBObject();
project.put("$project", projectFields);
jsonlist.add(project);
// 分页
BasicDBObject skip = new BasicDBObject();
skip.put("$skip", (data.getCurrentPage() - 1) * data.getPerPageCount());
jsonlist.add(skip);
BasicDBObject limit = new BasicDBObject();
limit.put("$limit", data.getPerPageCount());
jsonlist.add(limit);
AggregationOutput outPut = mongoTemplate.getCollection(collectionName).aggregate(jsonlist);
Iterable<DBObject> it = outPut.results();