一个mongo聚合数据的例子
来源:互联网 发布:软件配置状态报告 编辑:程序博客网 时间:2024/05/02 01:05
mongo里每天会记录一些这样的数据,要把这些数据按照时间聚合。
function statisticsSchoolForTimes(nowtime) { db.getCollection('all').aggregate( [ {$match:{"time":nowtime}}, { $group:{ _id:{"schoolId":"$schoolId","userRole":"$userRole"}, provinceCode:{$first:"$provinceCode"}, provinceValue:{$first:"$provinceValue"}, cityValue:{$first:"$cityValue"}, cityCode:{$first:"$cityCode"}, countyCode:{$first:"$countyCode"}, countyValue:{$first:"$countyValue"}, schoolLevel:{$first:"$schoolLevel"}, schoolName:{$first:"$schoolName"}, schoolId:{$first:"$schoolId"}, time:{$first:"$time"}, userRole:{$first:"$userRole"} } } ]).forEach(function(x){ var praiseNum=db.getCollection('all').find({"schoolId":x.schoolId,"time":x.time,"type":"praise","userRole":x.userRole}).count(); var downloadNum=db.getCollection('all').find({"schoolId":x.schoolId,"time":x.time,"type":"download","userRole":x.userRole}).count(); var collectionNum=db.getCollection('all').find({"schoolId":x.schoolId,"time":x.time,"type": "collection","userRole":x.userRole}).count(); var commentNum=db.getCollection('all').find({"schoolId":x.schoolId,"time":x.time,"type":"comment","userRole":x.userRole}).count(); var browseNum=db.getCollection('all').find({"schoolId":x.schoolId,"time":x.time,"type":"browse","userRole":x.userRole}).count(); db.getCollection('school').insert(x); db.getCollection('school').update({"schoolId":x.schoolId,"time":x.time,"userRole":x.userRole},{'$set': {'praiseNum': praiseNum,'downloadNum': downloadNum,'collectionNum': collectionNum,'commentNum': commentNum,'browseNum': browseNum}}); })}
java里面每天凌晨定时执行这个函数即可
private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public void run() { try { System.out.println("开始数据统计聚合任务,时间为:"+formatter.format(Calendar.getInstance().getTime())); aggregate(); System.out.println("结束数据统计聚合任务,时间为:"+formatter.format(Calendar.getInstance().getTime())); } catch (Exception e) { System.out.println("-------------数据统计聚合任务发生异常--------------"+e.toString()); } }
public static void aggregate(){ System.out.println("开始数据统计聚合任务,时间为:"+formatter.format(Calendar.getInstance().getTime())); MongoUtils mu = new MongoUtils();MongoUtils.createMongoClient();DB db=mu.getDB(MongoUtils.DATABASE);String nowTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date());db.eval("statisticsDistrictForTimes('"+nowTime+"')");db.eval("statisticsSchoolForTimes('"+nowTime+"')");mu.closeConnection(); System.out.println("结束数据统计聚合任务,时间为:"+formatter.format(Calendar.getInstance().getTime())); }
聚合之后的数据是这样的:
1 0
- 一个mongo聚合数据的例子
- mongo 的crud操作&&mongo的数据聚合
- sql2005中一个xml聚合的例子
- sql2005中一个xml聚合的例子
- sql2005中一个xml聚合的例子
- sql2005中一个xml聚合的例子
- mongo聚合
- Mongo聚合
- tp5中 mongo的聚合查询
- COM学习笔记(十一 ):聚合的一个完整例子
- 一个使用MFC实现Com聚合的例子
- mongo的数据备份
- 数据岛的一个例子
- 数据挖掘的一个例子
- mongo aggregate聚合查询
- mongo之聚合
- mongo聚合操作
- Mongo DB聚合
- linux中shell变量$#,$@,$0,$1,$2的含义解释
- 设置CATALINA_HOME环境变量
- 05-软件XX(设计方案、需求、概要...)评审报告
- java学习笔记
- Java编程之注解
- 一个mongo聚合数据的例子
- 查看mysql是什么对象导致被OOM了
- C++ Primer Chapter 4
- JAVA——构建字符串StringBuffer(一)
- 手机号校验
- java反射机制简述
- windows VM12虚拟机安装苹果系统(Mac OX 10.11)
- mysql远程连接访问设置
- CAD(dxf)、SHP、KML数据加载并套合到卫星图像上(坐标校准)