java mongodb aggregate用法
2016-07-26 14:16
302 查看
MongoDB语句
db.tsdata.aggregate([{$match: { "lastUpdateTime" :{"$gte": ISODate("2016-07-22T16:00:00.000Z"),"$lte": ISODate("2016-07-23T16:00:00.000Z")}}},
{$group: {_id: {"lastEvent": "$lastEvent"}, "count": {$sum: 1}}},
{$sort: {_id: 1}},
{$limit: 100}
])
Java实现
//当前日期前3天Calendar oneDayStart = Calendar.getInstance();
oneDayStart.setTime(new Date());
oneDayStart.add(Calendar.DAY_OF_MONTH, -3);
oneDayStart.set(Calendar.HOUR_OF_DAY, 0);
oneDayStart.set(Calendar.MINUTE, 0);
oneDayStart.set(Calendar.SECOND, 0);
oneDayStart.set(Calendar.MILLISECOND,0);
Calendar oneDayEnd = Calendar.getInstance() ;
oneDayEnd.setTime(new Date());
oneDayEnd.add(Calendar.DAY_OF_MONTH, -3);
oneDayEnd.set(Calendar.HOUR_OF_DAY, 23);
oneDayEnd.set(Calendar.MINUTE, 59);
oneDayEnd.set(Calendar.SECOND, 59);
oneDayEnd.set(Calendar.MILLISECOND,999);
//match
BasicDBObject[] array = {
new BasicDBObject("lastUpdateTime", new BasicDBObject("$gte",oneDayStart.getTime())),
new BasicDBObject("lastUpdateTime", new BasicDBObject("$lte",oneDayEnd.getTime())) };
BasicDBObject cond = new BasicDBObject();
cond.put("$and", array);
DBObject match = new BasicDBObject("$match", cond);
//group
DBObject groupFields = new BasicDBObject( "_id", "$lastEvent");
groupFields.put("count", new BasicDBObject( "$sum", 1));
DBObject group = new BasicDBObject("$group", groupFields);
//sort
DBObject sort = new BasicDBObject("$sort", new BasicDBObject("_id", 1));
//limit
DBObject limit = new BasicDBObject("$limit", 5);
AggregationOutput output = mongoTemplate.getCollection("tsdata").aggregate(match,group,sort,limit);
Iterable<DBObject> list= output.results();
for(DBObject dbObject:list){
System.out.println(dbObject.get("_id") +" "+dbObject.get("count"));
}
输出结果
Start spring container!no use
Spring container started!
ActionCodeChange 98826
Book 20639
Cancel 69446
CheckIn 291753
Downgrade 13
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- 分享微信开发Html5轻游戏中的几个坑
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- 如何在 Fedora 上安装 MongoDB 服务器
- PropertyChangeListener简单理解
- PHP添加yaf xhprof mongodb 同理
- mongodb安装
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器