1. 程式人生 > >java mongodb aggregate用法

java mongodb aggregate用法

db.t_user_behavior.aggregate( [
   {$match:{cityId:"1"}},
   {
     $group: {
        _id: {
           fangId: "$Id",
           cityId:"$cityId"
        },
        count: { $sum: 1 }
     }
   },
   {$sort:{count:-1}}
] )

轉載自:http://blog.csdn.net/adam_wzs/article/details/52035299

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.         //match
  17.         BasicDBObject[] array = {    
  18.                 new BasicDBObject("lastUpdateTime"new BasicDBObject("$gte",oneDayStart.getTime())),    
  19.                 new BasicDBObject("lastUpdateTime"new BasicDBObject("$lte",oneDayEnd.getTime())) };    
  20.         BasicDBObject cond = new BasicDBObject();    
  21.         cond.put("$and", array);    
  22.         DBObject match = new BasicDBObject("$match", cond);    
  23.         //group
  24.         DBObject groupFields = new BasicDBObject( "_id""$lastEvent");   
  25.         groupFields.put("count"new BasicDBObject( "$sum"1));   
  26.         DBObject group = new BasicDBObject("$group", groupFields);  
  27.         //sort
  28.         DBObject sort = new BasicDBObject("$sort"new BasicDBObject("_id"1));  
  29.         //limit
  30.         DBObject limit = new BasicDBObject("$limit"5);  
  31.         AggregationOutput output = mongoTemplate.getCollection("tsdata").aggregate(match,group,sort,limit);  
  32.         Iterable<DBObject> list= output.results();  
  33.         for(DBObject dbObject:list){  
  34.             System.out.println(dbObject.get("_id") +" "+dbObject.get("count"));  
  35.         }  


輸出結果

[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