java mongodb aggregate用法

MongoDB语句

[html]  view plain  copy
 print ?
  1. db.tsdata.aggregate([  
  2.     {$match: { "lastUpdateTime" :{"$gte": ISODate("2016-07-22T16:00:00.000Z"),"$lte": ISODate("2016-07-23T16:00:00.000Z")}}},  
  3.     {$group: {_id: {"lastEvent": "$lastEvent"}, "count": {$sum: 1}}},  
  4.     {$sort: {_id: 1}},  
  5.     {$limit: 100}  
  6. ])  

Java实现

[java]  view plain  copy
 print ?
  1. //当前日期前3天  
  2.         Calendar oneDayStart = Calendar.getInstance();  
  3.         oneDayStart.setTime(new Date());  
  4.         oneDayStart.add(Calendar.DAY_OF_MONTH, -3);  
  5.         oneDayStart.set(Calendar.HOUR_OF_DAY, 0);  
  6.         oneDayStart.set(Calendar.MINUTE, 0);  
  7.         oneDayStart.set(Calendar.SECOND, 0);  
  8.         oneDayStart.set(Calendar.MILLISECOND,0);  
  9.         Calendar oneDayEnd = Calendar.getInstance() ;  
  10.         oneDayEnd.setTime(new Date());  
  11.         oneDayEnd.add(Calendar.DAY_OF_MONTH, -3);  
  12.         oneDayEnd.set(Calendar.HOUR_OF_DAY, 23);  
  13.         oneDayEnd.set(Calendar.MINUTE, 59);  
  14.         oneDayEnd.set(Calendar.SECOND, 59);  
  15.         oneDayEnd.set(Calendar.MILLISECOND,999);  
  16.           
  17.         //match  
  18.         BasicDBObject[] array = {    
  19.                 new BasicDBObject("lastUpdateTime"new BasicDBObject("$gte",oneDayStart.getTime())),    
  20.                 new BasicDBObject("lastUpdateTime"new BasicDBObject("$lte",oneDayEnd.getTime())) };    
  21.         BasicDBObject cond = new BasicDBObject();    
  22.         cond.put("$and", array);    
  23.         DBObject match = new BasicDBObject("$match", cond);    
  24.         //group  
  25.         DBObject groupFields = new BasicDBObject( "_id""$lastEvent");   
  26.         groupFields.put("count"new BasicDBObject( "$sum"1));   
  27.         DBObject group = new BasicDBObject("$group", groupFields);  
  28.         //sort  
  29.         DBObject sort = new BasicDBObject("$sort"new BasicDBObject("_id"1));  
  30.         //limit  
  31.         DBObject limit = new BasicDBObject("$limit"5);  
  32.   
  33.         AggregationOutput output = mongoTemplate.getCollection("tsdata").aggregate(match,group,sort,limit);  
  34.         Iterable<DBObject> list= output.results();  
  35.         for(DBObject dbObject:list){  
  36.             System.out.println(dbObject.get("_id") +" "+dbObject.get("count"));  
  37.         }  


输出结果

[java]  view plain  copy
 print ?
  1. Start spring container!  
  2. no use  
  3. Spring container started!  
  4. ActionCodeChange 98826  
  5. Book 20639  
  6. Cancel 69446  
  7. CheckIn 291753  
  8. Downgrade 13  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值