使用java 操作mongodb的aggregate

来源:互联网 发布:利用网络漏洞日赚上万 编辑:程序博客网 时间:2024/05/03 03:22

MongoDB语句

[html] view plain copy
  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
  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
  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