java mongodb aggregate用法

来源:互联网 发布:西南大学网络教育2017 编辑:程序博客网 时间:2024/05/17 16:53

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.           
  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  
原创粉丝点击