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;
        
    }

 

posted @ 2017-09-26 14:00  风茂angel  阅读(508)  评论(0编辑  收藏  举报