zoukankan      html  css  js  c++  java
  • java mongoTemplate的group统计

    @Service
    public class MongoCountServiceImpl implements MongoCountService {
        @Autowired
        private MongoTemplate mongoTemplate;
    
        @Override
        public List<MongoCountDTO> count(String docName, String groupFeild, Query queryCondition) {
            //定义统计返回字段:默认添加以...分组的字段groupFeild、下面定义的count
            String 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);
  • 相关阅读:
    STM32.ADC
    电源方案集
    什么叫二级域名
    android驱动学习---led实验
    Get,Post和Head具体解释
    Android 编码规范
    VC:当前不会命中断点,还没有为该文档载入不论什么符号
    经常使用的结构体
    【Facebook的UI开发框架React入门之九】button简单介绍(iOS平台)-goodmao
    记录遇到的ios下的bugs[废弃]
  • 原文地址:https://www.cnblogs.com/yangzhenlong/p/7054207.html
Copyright © 2011-2022 走看看