DBObject match = new BasicDBObject( "$match" , new BasicDBObject( "_id.shop_id" , Integer.parseInt(shopAmount.getShopId())). append( "_id.date" , new BasicDBObject( "$gte" , startDate).append( "$lte" , endDate))); BasicDBList dbList = new BasicDBList(); dbList.add( "$_id.date" ); dbList.add( 28800000 );//解决timezone 8 小时时差 Map<String, Object> dbObjIdMap = new HashMap<String, Object>(); dbObjIdMap.put( "year" , new BasicDBObject( "$year" ,new BasicDBObject( "$add" ,dbList))); dbObjIdMap.put( "month" , new BasicDBObject( "$month" ,new BasicDBObject( "$add" ,dbList))); dbObjIdMap.put( "dayOfMonth" , new BasicDBObject( "$dayOfMonth" ,new BasicDBObject( "$add" ,dbList))); DBObject groupFields = new BasicDBObject( "_id" , new BasicDBObject(dbObjIdMap)); groupFields.put( "amount" , new BasicDBObject( "$sum" , "$value.amount" )); groupFields.put( "count" , new BasicDBObject( "$sum" , "$value.count" )); groupFields.put( "cost" , new BasicDBObject( "$sum" , "$value.cost" )); DBObject group = new BasicDBObject( "$group" , groupFields); DBObject fields = new BasicDBObject( "_id" , 1 ); fields.put( "cost" , 1 ); fields.put( "amount" , 1 ); fields.put( "count" , 1 ); DBObject project = new BasicDBObject( "$project" , fields ); DBObject sort = new BasicDBObject( "$sort" , new BasicDBObject( "_id" , -1 )); /* 查看Group结果 */ AggregationOutput output = collection.aggregate(match, group,project,sort); // 执行 aggregation命令 System.out.println(output.getCommandResult()); Collection<Object> c = output.getCommandResult().values(); Object o[] = c.toArray(); BasicDBList resultList = (BasicDBList) o[ 1 ]; |