• MongoDB学习笔记


    MongoDB连接:

    public class MongoDBOperate {
    
        private static final Logger logger = LogUtils.getLogger();
        private static DruidDataSource dataSource;
        public static MongoClient client = null;
    
        public  static String Ip = null;
        public  static int Port = 0;
        public  static String DatabaseName =null;
        public  static String UserName =null;
        public  static String Pwd =null;
        static {
            Properties dbProperties = new Properties();
            for (String name : PropertiesReader.getPropertyNames()) {
                if (name != null) {
                    if (name.equals("md_password")) {
                        dbProperties.put(name.replace("md_", ""), PropertiesReader.getProperty(name));
                        Pwd = PropertiesReader.getProperty(name);
                    }
                    if (name.equals("md_userName")) {
                        dbProperties.put(name.replace("md_", ""), PropertiesReader.getProperty(name));
                        UserName = PropertiesReader.getProperty(name);
                    }
                    if (name.equals("md_databaseName")) {
                        dbProperties.put(name.replace("md_", ""), PropertiesReader.getProperty(name));
                        DatabaseName = PropertiesReader.getProperty(name);
                    }
                    if (name.equals("md_port")) {
                        dbProperties.put(name.replace("md_", ""), PropertiesReader.getProperty(name));
                        Port = Integer.parseInt(PropertiesReader.getProperty(name));
                    }
                    if (name.equals("md_host")) {
                        dbProperties.put(name.replace("md_", ""), PropertiesReader.getProperty(name));
                        Ip = PropertiesReader.getProperty(name);
                    }
                }
            }
    
        /**
         * 获取连接
         * @return
         */
        public MongoClient getCon(){
            if(client==null){
                client = new MongoClient(Ip,Port, DatabaseName,UserName,Pwd);
            }
            return client;
        }
    
    
    }

    MongoDB操作:

    public class MongoDbOperate {
    
        /**
         * 查询前一天所有上传数据
         *
         * @return
         */
        public static List<CpyGateway> queryAll(Long stime, Long etime) {
    
            //获取连接
            MongoDBOperate mongoDBOperate = new MongoDBOperate();
            MongoClient client = mongoDBOperate.getCon();
    
            List<CpyGateway> list = new ArrayList<>();
    
            String companycode = null;
            String waycode = null;
    
            AggregateIterable<Document> groupResult = client.getCollection("data_Collection_Log").aggregate(Arrays.asList(
    
                    // match中写查询条件
                    Aggregates.match(
                            Filters.and(
                                    Filters.lte("c_time", etime),
                                    Filters.gte("c_time", stime)
                            )
                    ),
                    Aggregates.group("$gatewayId",
                            // Accumulators.sum("data","")
                            Accumulators.sum("_id", "$sum:1"),
                            Accumulators.addToSet("gatewayId", "$gatewayId")
                    )
    
            ));
            for (Document document : groupResult) {
    
                com.alibaba.fastjson.JSONObject jo = JSON.parseObject(document.toJson());
    
                com.alibaba.fastjson.JSONArray gatewayArray = JSON.parseArray(jo.getString("gatewayId"));
                for (int i = 0; i < gatewayArray.size(); i++) {
                    CpyGateway cg = new CpyGateway();
                    waycode = gatewayArray.get(i).toString();
    
                    companycode = waycode.substring(0, 8);
                    cg.setCompanycode(companycode);
                    cg.setWaycode(waycode);
                    list.add(cg);
                }
    
            }
    
            return list;
        }
    
    }
    

      

     AggregateIterable<Document> groupResult = collection.aggregate(Arrays.asList(
                    // match中写查询条件
                    Aggregates.match(
                            Filters.and(
                                    Filters.lte("date", 1532679880386L),
                                    Filters.gte("date", 1532677122452L))
                    ),
                    // sort写排序条件,value为1是正序,-1为倒序,append用来控制多列排序
                    Aggregates.sort(new Document("date", -1).append("name", 1)),
                    // group中写聚合操作,id为聚合键,可写MongoDB表达式;
                    // 后续的参数为分组后的列,可使用Accumulators类中的静态方法进一步取第一条/最后一条、最大/最小值、求和、求平均值等操作
                    Aggregates.group("$name",
                            Accumulators.first("date", "$date"),
                            Accumulators.first("children", "$children"))
            ));
    
            for (Document document : groupResult) {
                System.out.println(document.toJson());
            }
    

      

  • 相关阅读:
    B站开源播放框架ijkplayer(iOS版)使用教程
    GitHub前50名的Objective-C动画相关库
    iOS系统自带的 UIAlertView 自动旋转的实现
    iOSAPP启动时实现加载广告
    每周分享第5期(2019.5.4)
    如何为Redis中list中的项设置过期时间
    对scrapy进行单元测试 -- 使用betamax
    【AMAD】betamax -- 一个ruby-VCR的模仿品,只支持requests
    【AMAD】stackprint -- 为Python加入利于调试的traceback信息
    【AMAD】Pysnooper -- 别再用print进行debug了
  • 原文地址:https://www.cnblogs.com/bendoudou/p/9764900.html
Copyright © 2020-2023  润新知