Mongo Group

    xiaoxiao2021-03-25  104

    package com.xxx.statistic.mongo; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import com.xxx.statistic.constants.Constants; import com.xxx.statistic.file.ExcelWriter; import com.xxx.statistic.util.GsonHelper; import com.mongodb.AggregationOutput; import com.mongodb.BasicDBObject; import com.mongodb.CommandResult; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBObject; import com.mongodb.Mongo; public class MongoStatistic { public static Mongo mongo; public static void genMongoStatisticInfo()throws Exception{ DB db = mongo.getDB(Constants.MONGO_XXX_DB); Set<String> collectionNames = db.getCollectionNames(); List<Map<String,Object>> records = new ArrayList<Map<String,Object>>(); for(String name : collectionNames){ if(name.startsWith("xxx")){ Map<String,Object> ret = new HashMap<String, Object>(); DBCollection collection = db.getCollection(name); DBObject date = new BasicDBObject(); date.put("$gte", Integer.parseInt(Constants.START_DATE)); date.put("$lte", Integer.parseInt(Constants.END_DATE)); Long count = collection.count(new BasicDBObject("DATE",date)); ret.put("collection", name); ret.put("avg_day_count", count.doubleValue()/n+""); CommandResult result = collection.getStats(); ret.put("total_count",result.get("count").toString()); ret.put("size",result.get("size").toString()); ret.put("avgObjSize",result.get("avgObjSize").toString()); ret.put("storageSize",result.get("storageSize").toString()); ret.put("numExtents",result.get("numExtents").toString()); ret.put("totalIndexSize",result.get("totalIndexSize").toString()); records.add(ret); } } ExcelWriter.write("mongo","xxx", new String[]{"collection","avg_day_count", "total_count","size","avgObjSize", "storageSize","numExtents","totalIndexSize"}, new String[]{"集合名","日均数据增量", "总数据量","占用空间(字节)","平均每条记录占用空间(字节)", "分配的空间(字节)","连续分配的数据块","索引总数"}, records); } public static void genMongoInfo()throws Exception{ DB db = mongo.getDB(Constants.MONGO_RMM_DB); DBCollection collection = db.getCollection("xxx"); DBObject date = new BasicDBObject(); date.put("$gte", Integer.parseInt(Constants.START_DATE)); date.put("$lte", Integer.parseInt(Constants.END_DATE)); DBObject match = new BasicDBObject("$match", new BasicDBObject("date", date)); DBObject fields = new BasicDBObject(); fields.put("_id", "$processorId"); fields.put("type", new BasicDBObject("$max", "$type")); fields.put("triggerType", new BasicDBObject("$max", "$triggerType")); fields.put("calculate_num", new BasicDBObject("$sum", "$calculate")); fields.put("receive_num", new BasicDBObject("$sum", "$receive")); DBObject group = new BasicDBObject("$group", fields); AggregationOutput output = collection.aggregate(match,group); CommandResult result = output.getCommandResult(); List<Map<String,Object>> records = GsonHelper.lmso(result.get("result").toString()); for(Map<String,Object> map :records){ //TODO 数据加工 } ExcelWriter.write(param1,...); } @SuppressWarnings("deprecation") public static void initMongo() throws Exception{ try { mongo = new Mongo(Constants.MONGO_IP, Integer.parseInt(Constants.MONGO_PORT)); } catch(Exception e) { throw new Exception(e); } DB db = mongo.getDB("admin"); boolean ok = db.authenticate(Constants.MONGO_USER_NAME , Constants.MONGO_PASSWORD.toCharArray()); if(!ok){ mongo = null; } } }
    转载请注明原文地址: https://ju.6miu.com/read-15827.html

    最新回复(0)