mongo分组查询集合语句:
var docs=db['Ali.GPRS.group.20180519'].aggregate({'$group':{'_id':'$_id','downVolume':{'$sum':'$downVolume'},'upVolume':{'$sum':'$upVolume'}}});
docs.forEach(function(d){db['Ali.GPRS.group.20180520'].insert(d)});
Java语句,例子如下:
DBCollection collection = MongoKit.getCollection(collectionName);
Date startTime = new Date(DateUtils.parseDate(startTimeStr, "yyyy-MM-dd HH:mm:ss").getTime());
Date endTime = new Date(DateUtils.parseDate(endTimeStr, "yyyy-MM-dd HH:mm:ss").getTime());
BasicDBList subStartTimeList = new BasicDBList();
subStartTimeList.add("$CREATE_TIME");
subStartTimeList.add(startTime);
BasicDBObject subStartTimeObject = new BasicDBObject("$subtract", subStartTimeList);
BasicDBList modList = new BasicDBList();
modList.add(subStartTimeObject);
modList.add(1000 * 60 * 60);
BasicDBObject modObject = new BasicDBObject("$mod", modList);
BasicDBList subList = new BasicDBList();
subList.add(subStartTimeObject);
subList.add(modObject);
BasicDBObject matchTime = new BasicDBObject("CREATE_TIME", new BasicDBObject("$gte", startTime)
.append("$lte", endTime)).append("SERVICE_NAME", SerivceName);
DBObject match = new BasicDBObject("$match", matchTime);
DBObject groupFields = new BasicDBObject("_id", new BasicDBObject("time",
new BasicDBObject("$subtract", subList)));
groupFields.put("count", new BasicDBObject("$sum", 1));
groupFields.put("createTime", new BasicDBObject("$first", new BasicDBObject("$dateToString",
new BasicDBObject("format", "%H").append("date", "$CREATE_TIME"))));
groupFields.put("success", new BasicDBObject("$push", "$STATUS_CODE"));
DBObject group = new BasicDBObject("$group", groupFields);
BasicDBObject sort=new BasicDBObject("$sort",new BasicDBObject("createTime",1));
List<DBObject> sqllist = new ArrayList<DBObject>();
sqllist.add(match);
sqllist.add(group);
sqllist.add(sort);
logger.info("_______________________{}", sqllist);
//从Mongo中查寻数据
AggregationOutput output = collection.aggregate(sqllist);