• java中操作Mongodb


    Mongodb是一个nosql型的数据库,存储的是类似于json对象,能够支持类似于关系型数据库的一些操作。以下是java操作mongodb。

    一、建立连接(没有使用任何框架,连接是自己写的,同时在这个类写了关闭连接的方法),传入ip地址、端口和数据库名称(mongodb称集合)

    public class MongoDbConn {
        private static MongoClient mongoClient = null;
        private static MongoDatabase mongoDatabase = null;
        public static MongoDatabase getDatabase(String ipaddress,int port,String dbName) {
            mongoClient = new MongoClient(ipaddress, port);
            mongoDatabase = mongoClient.getDatabase(dbName);
            return mongoDatabase;
        }
        public static void closeDatabase(){
            try{
                if(mongoClient!=null){
                    mongoClient.close();
                }
            }catch(Exception e){
                throw new RuntimeException();
            }finally{
                mongoClient = null;
            }
            
        
        }
    
    }

    二、使用操作,以下是查询的例子

    public List<Data> getAllAbsData(RankParam rankParam) {
            List<Data> dataList = new ArrayList<Data>();
            MongoDatabase mongoDatabase = MongoDbConn.getDatabase("localhost", 27017, "area_new");
            MongoCollection<Document> collection = mongoDatabase.getCollection("vaabs_monthly");
            FindIterable<Document> findIterable = null;
            if ("vaabs".equals(rankParam.getIndexCode())) {
                if (rankParam.getAreaCode() == null || "".equals(rankParam.getAreaCode())) {// 全国
                    //db.vaabs_monthly.find({"$and":[{"indusId":300},{"areaCode":/.*0000$/}]})
                    Pattern queryPattern = Pattern.compile(".*0000$", Pattern.CASE_INSENSITIVE);
                    BasicDBObject queryObject = new BasicDBObject();
                    queryObject.put("areaCode", queryPattern);
                    queryObject.put("indusId", rankParam.getIndusId());
                    findIterable = collection.find(queryObject);
                    
                }else {//全省所有市的数据
                    //db.vaabs_monthly.find({"$and":[{"indusId":300},{"date":"2007-01-31"},{"areaCode":/^13/},{"areaCode":/.*00$/},{"areaCode":{"$not":/.*0000$/}}]})
                    //Pattern startPattern = Pattern.compile("^13", Pattern.CASE_INSENSITIVE);
                    Pattern startPattern = Pattern.compile("^"+rankParam.getAreaCode(), Pattern.CASE_INSENSITIVE);
                    Pattern endPattern = Pattern.compile(".*00$", Pattern.CASE_INSENSITIVE);
                    Pattern notPattern = Pattern.compile(".*0000$", Pattern.CASE_INSENSITIVE);
                    BasicDBObject queryObject = new BasicDBObject().append(QueryOperators.AND, new BasicDBObject[]{new BasicDBObject("indusId",rankParam.getIndusId()),
                            new BasicDBObject("areaCode",startPattern),new BasicDBObject("areaCode",endPattern),new BasicDBObject("areaCode", new BasicDBObject("$not",notPattern))
                            });
                    
                    findIterable = collection.find(queryObject);
                    
                    
                }
                MongoCursor<Document> mongoCursor = findIterable.iterator();
                while (mongoCursor.hasNext()) {
                    Document document = mongoCursor.next();
                    dataList.add(new Data(document.getString("name"), document.getDouble("value"), document.getString("date"), document.getString("areaCode"), document.getInteger("indusId")));
                }
    
            }else{
                
            }
            return dataList;
            
        }
  • 相关阅读:
    springmvc视频学习
    两个数组a和b,都已经升序排列. 查找相同的元素?(要求不使用两层for循环)
    https Java SSL Exception protocol_version
    java多线程笔试题:设计4个线程,其中两个线程每次对j增加1,另外2个线程每次对j减少1.写出程序
    java多线程笔试题:子线程循环10次;接着主线程循环20次,接着又子线程循环10次,接着再回到主线程又循环20次,如此循环50次,请写出程序。
    R语言学习笔记
    重建二叉树-牛客网-剑指offer
    字符串替换空格-牛客网-剑指offer
    二维数组中的查找-牛客网-剑指offer
    牛客网-剑指offer-java版本解答目录(经自测)
  • 原文地址:https://www.cnblogs.com/fengmao/p/7596455.html
Copyright © 2020-2023  润新知