JAVA 通过MongoTemplate管理MongoDB的统计实现
2016-09-10 15:53
369 查看
//根据投保单号(applNo),组织层次代码(levelCode),险种代码(polCode) 查询被保人信息【GrpInsured】组织查询条件:
//1、组织查询条件:
Criteria c=Criteria.where("applNo").is("").and("levelCode").is("");
//org.springframework.data.mongodb.core.aggregation.Aggregation,用于组合一个统计需要的元素
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.match(c),
//查询条件
Aggregation.unwind("subStateList"),
//需要一个文档数组,并将它们作为一个文档流返回。
//group("$subStateList.polCode"):需要根据分组的字段
//sum("subStateList.premium"):需要聚合的字段
//as("sumPremium") :起别名
Aggregation.group("$subStateList.polCode").sum("subStateList.premium").as("sumPremium")
);
AggregationResults<GrpInsured> aggregate =
mongoTemplate.aggregate(aggregation, 需要查询的集合名称, 集合对应Model【GrpInsured】.class);
//通过调试可知道,查询出的结果存放在aggregate.getRawResults().get("result")中;
BasicDBList bdbl =(BasicDBList) aggregate.getRawResults().get("result");
//获取子要约【SubState】中险种保费【premium】累计数
double sumPremium = 0 ;
for(int i=0;i<bdbl.size();i++){
BasicDBObject obj=(BasicDBObject) bdbl.get(i);
System.out.println("id:"+obj.getString("_id")+">>>>sumPremium:"+obj.getDouble("sumPremium"));
}
//1、组织查询条件:
Criteria c=Criteria.where("applNo").is("").and("levelCode").is("");
//org.springframework.data.mongodb.core.aggregation.Aggregation,用于组合一个统计需要的元素
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.match(c),
//查询条件
Aggregation.unwind("subStateList"),
//需要一个文档数组,并将它们作为一个文档流返回。
//group("$subStateList.polCode"):需要根据分组的字段
//sum("subStateList.premium"):需要聚合的字段
//as("sumPremium") :起别名
Aggregation.group("$subStateList.polCode").sum("subStateList.premium").as("sumPremium")
);
AggregationResults<GrpInsured> aggregate =
mongoTemplate.aggregate(aggregation, 需要查询的集合名称, 集合对应Model【GrpInsured】.class);
//通过调试可知道,查询出的结果存放在aggregate.getRawResults().get("result")中;
BasicDBList bdbl =(BasicDBList) aggregate.getRawResults().get("result");
//获取子要约【SubState】中险种保费【premium】累计数
double sumPremium = 0 ;
for(int i=0;i<bdbl.size();i++){
BasicDBObject obj=(BasicDBObject) bdbl.get(i);
System.out.println("id:"+obj.getString("_id")+">>>>sumPremium:"+obj.getDouble("sumPremium"));
}
相关文章推荐
- java和Discuz论坛实现单点登录,通过Ucenter(用户管理中心)
- 使用MongoTemplate管理MongoDB的一些查询操作(Java)
- java和Discuz论坛实现单点登录,通过Ucenter(用户管理中心)
- java和Discuz论坛实现单点登录,通过Ucenter(用户管理中心)
- 通过java实现代码规模统计并把结果导出至execl中
- 玩转mongodb(九):通过log4jmongo来实现分布式系统的日志统一管理
- OpenSUSE Leap 42.3下通过Firefox Opera Chromium浏览器直接执行java应用程序(打开java jnlp文件)实现在服务器远程虚拟控制台完成远程管理的方法
- javawebday55(filter过滤器 通过监听和Filter实现统计IP访问次数 )
- java通过监听Session实现统计在线用户
- [Oracle DB管理] 通过数据库的锁实现Java中DML的顺序批次执行
- 通过java反射实现简单的关于MongoDB的对象关系映射(ORM).
- Ubuntu下通过Firefox Opera Chromium浏览器直接执行java应用程序(打开java jnlp文件)实现在服务器远程虚拟控制台完成远程管理的方法
- Java 中实现文章单词,标点的统计办法。
- Spring声明式事务管理,通过Spring AOP实现
- JAVA定时器实现之一(通过继承TimerTask)
- 通过JNI实现Java和C++的相互调用
- 如何通过动态生成Html灵活实现DataGrid分类统计的界面
- Java Web中的分页显示——通过界面实现
- 通过Cache机制实现通用的配置管理模块(含源码)
- (源码实例)通过层DIV实现,当鼠标放在链接上面,显示图片及文字 - 流星絮语 JAVA学习笔记 - CSDNBlog