java mongodb aggregate用法
阿新 • • 發佈:2019-02-03
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- 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實現
[java] view plain- //當前日期前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"));
- }
輸出結果
[java] view
plain copy
print?
- Start spring container!
- no use
- Spring container started!
- ActionCodeChange 98826
- Book 20639
- Cancel 69446
- CheckIn 291753
- Downgrade 13