mongo与Java之aggregate
来源:互联网 发布:淘宝同城鲜花速递 编辑:程序博客网 时间:2024/05/15 23:54
使用aggregate实现分组功能:
–脚本
db.wx_local_group_count_day.aggregate({"$match":{"_id.name":{$in:["坂田", "南湾", "平湖", "龙岗", "横岗", "龙城", "坪地", "布吉"]}, "_id.updateTime":{$gte:"2015-06-01",$lte:"2015-06-10 23:59:59"} } },{"$group":{ "_id":"$_id.updateTime", "fssum":{"$sum":"$value.fssum"}, "xzsum":{"$sum":"$value.xzsum"}, "bdfssum":{"$sum":"$value.bindsum"} }},{"$sort":{"_id":-1}} );
$match—是查询条件
$group—分组内容 其中的Key “_id”是必须的.
Java实现 上述脚本
/** * 拼接日期查询格式 * */ public DBObject searchTime(String startTime,String endTime){ DBObject timeC = new BasicDBObject(); if (StringHelper.isNotNull(startTime)) { startTime = startTime; timeC.put("$gte", startTime); } if (StringHelper.isNotNull(endTime)) { endTime = endTime + " " + "23:59:59"; timeC.put("$lte", endTime); } return timeC; } DBObject timeC = searchTime("2015-06-01","2015-06-10"); List<String> zxs = Arrays.asList(new String[]{"坂田","南湾"...}); String gsmc = ""; //aggregate实现分组加排序 public List<Map> dayGroup(DBObject timeC,List zxs,String gsmc){ List list = new ArrayList(); BasicDBObject in = new BasicDBObject(); //查询条件 in.append("_id.name", new BasicDBObject("$in", zxs)); in.append("_id.updateTime", timeC); BasicDBObject math = new BasicDBObject(); math.append("$match",in); BasicDBObject groupby = new BasicDBObject();//分组统计 groupby.append("_id", "$_id.updateTime"); groupby.append("fssum", new BasicDBObject("$sum", "$value.fssum")); groupby.append("xzsum", new BasicDBObject("$sum", "$value.xzsum")); groupby.append("bdfssum", new BasicDBObject("$sum", "$value.bindsum")); BasicDBObject group = new BasicDBObject(); group.append("$group", groupby); BasicDBObject sort = new BasicDBObject(); sort.append("$sort", new BasicDBObject("_id", -1)); //按updateTime倒序排 DBObject obj = (DBObject) groupCountDayDao.groupByAggregate(math, group, sort); JSONArray jsonarr = JSONArray.fromObject(obj);// 必须转成JSONArray, 转JSONObject会报错. for(int i = 0;i<jsonarr.size();i++){ JSONObject json = (JSONObject) jsonarr.get(i); Map map = new HashMap(); map.put("updateTime", json.getString("_id")); map.put("fssum", json.getInt("fssum")); map.put("xzsum", json.getInt("xzsum")); map.put("bdfssum", json.getInt("bdfssum")); map.put("gsmc",gsmc); list.add(map); } return list; }
0 0
- mongo与Java之aggregate
- mongo aggregate
- mongo-aggregate
- mongo与Java之Mapreduce
- Java中Mongo Aggregate 的$match的写法
- mongo aggregate聚合查询
- mongo 的 find和aggregate
- Mongo 聚合框架-Aggregate(一)
- Mongo 聚合框架-Aggregate(二)
- Mongo 聚合框架-Aggregate(三)
- [Mongo]分组统计时间 aggregate,group,distinct
- Mongo 聚合框架优化-Aggregate(四)
- PHP7使用mongo扩展写aggregate
- 【mongoDB高级篇①】聚集运算之group与aggregate
- LINQ之Aggregate
- RDD之aggregate
- RDD之aggregate操作
- 细说Linq之Aggregate
- poj2752 Seek the Name, Seek the Fame
- 《Artech的WCF剖析系列》系列技术文章整理收藏
- Catch That Cow--poj3278
- 深入分析Java Web技术内幕_第一章 学习笔记
- Java编程思想_笔记(二)
- mongo与Java之aggregate
- 七、适配器模式
- LTE中的HARQ学习(1)——基本概念
- (八) Python函数
- ls命令的简要实现
- PB技巧:DataWindw中批量删除行或恢复行
- Machine Learning 笔记
- IE浏览器兼容问题
- Google Protocol Buffers浅析(四)