JAVA查詢MongoDB語句集合
阿新 • • 發佈:2019-01-09
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);