Spring 整合 mongoTemplate 聚合查询统计
2018-02-06 09:43
197 查看
最近开发医院表单系统,表单数据存入mongodb,需要根据某一字段进行统计,然而存取的内容字段是不确定的,统计的话不能按照创建实体类那样进行查询统计,先开始使用 Aggregation进行统计是没有问题的,本地测试通过,代码如下
Aggregation aggregation = Aggregation.newAggregation("groupField").count().as("value"));
Aggregation aggregation = Aggregation.newAggregation("groupField").count().as("value"));
Criteria criteria = where("filed").is("value");
aggregation.match(criteria);
List<Map> maps = mongoTemplate.aggregate(aggregation,collectionName,Map.class).getMappedResults();
for(Map map:maps){String id = (String)map.get("_id");String value = map.get("value")+"";if(!StringUtils.isEmptyParam(id)){MongoResultVo mongoResultVo = new MongoResultVo();mongoResultVo.setName(id);mongoResultVo.setValue(Integer.valueOf(value));mongoResultVos.add(mongoResultVo);}}然而更新正式时却报错了,尼玛,查看日志发现是服务器mongodb的版本为3.6版本过高得使用游标遍历结果,随后改变思路换种方式查询,经测试在本地和正式都无问题代码如下
Criteria criteria = where("filed").is("value");
GroupBy groupBy = GroupBy.key(mongoQueryVo.getTarget()).initialDocument("{value:0}").reduceFunction("function(doc,prev){prev.value+=1}");GroupByResults<BasicDBObject> groupByResults = mongoTemplate.group(criteria,collectionName,groupBy,BasicDBObject.class);Iterator iterator = groupByResults.iterator();随后遍历获得结果即可,就不再写了
阅读更多
相关文章推荐
- 在SPRING DATA MONGODB中使用聚合统计查询
- Mongodb 和 spring的整合开发 权限认证 mongotemplate的group mapReduce开发
- spring-mongo-template中对内嵌集合对象 不定参数的查询
- mongoTemplate.aggregate()聚合查询
- Mongo整合SpringTemplate用法
- [增删改查] SpringBoot 整合 MongoDB 之 MongoTemplate 实现 CRUD、分页接口
- 在SPRING DATA MONGODB中使用聚合统计查询
- 在SPRING DATA MONGODB中使用聚合统计查询
- Spring MongoTemplate复杂查询分页排序
- Mongo整合SpringTemplate用法
- MongoTemplate——spring data 查询mongdb数据
- MongoTemplate数组查询
- Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询
- Spring 中常用的hql查询方法(getHibernateTemplate())(转)
- 淘淘商城系列——Spring与ActiveMQ的整合及用JmsTemplate发送消息
- SQL分类汇总统计聚合查询
- spring 整合 redis,以及spring的RedisTemplate如何使用
- [数据库]MongoTemplate之分组分页复合条件查询
- 使用IDEA基于Maven搭建多模块聚合工程(springmvc+spring+mybatis整合)
- spring mongoTemplate简单使用