java mongoTemplate的group统计
生活随笔
收集整理的這篇文章主要介紹了
java mongoTemplate的group统计
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
@Service
public class MongoCountServiceImpl implements MongoCountService {@Autowiredprivate MongoTemplate mongoTemplate;@Overridepublic List<MongoCountDTO> count(String docName, String groupFeild, Query queryCondition) {//定義統計返回字段:默認添加以...分組的字段groupFeild、下面定義的countString reduce = "function(doc, aggr){" +" aggr.count += 1;" +" }";DBObject result = mongoTemplate.getCollection(docName).group(new BasicDBObject(groupFeild, 1),queryCondition.getQueryObject(),new BasicDBObject("count", 0),reduce);List<Map> list = (List) JSON.toJSON(result);List<MongoCountDTO> countList = new ArrayList<>();//組裝全部long all = 0;if(CollectionUtils.isNotEmpty(list)) {for (Map o : list) {long cou = ((Double) o.get("count")).longValue();MongoCountDTO count = new MongoCountDTO((String) o.get(groupFeild), cou);countList.add(count);all = all + cou;}}MongoCountDTO allCount = new MongoCountDTO("全部", all);countList.add(0, allCount);return countList;}
}
?
?
如果想要返回多個字段值:
String reduce = "function(doc, aggr){" +" aggr.count += 1;" +" aggr.province = doc.insure_province;" +//這里是想返回的字段:自定義字段=mongo里doc的字段" }";Query queryCondition = new Query();DBObject result = mongoTemplate.getCollection("policy").group(new BasicDBObject("vehicle_type_no", 1),queryCondition.getQueryObject(),new BasicDBObject("count", 0),reduce);List<Map> list = (List) JSON.toJSON(result);?
轉載于:https://www.cnblogs.com/yangzhenlong/p/7054207.html
總結
以上是生活随笔為你收集整理的java mongoTemplate的group统计的全部內容,希望文章能夠幫你解決所遇到的問題。