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;

    }
时间: 2025-01-06 12:32:54

java中操作Mongodb的相关文章

Java开发--操作MongoDB

http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过前一篇文章我们对MongoDB有了全面的认识和理解.现在我们就用Java来操作MongoDB的数据. 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开发依赖库: JavaEE5.mongo-2.5.3.jar.junit-4.8.2.j

使用jcabi-ssh在java中操作ssh命令

使用jcabi-ssh在java中操作ssh命令 如果我们想在java代码中远程连接ssh,并且执行一些shell命令,可以使用jcabi-ssh这个小框架,纯java编写,很方便.这里介绍一下如何使用. 依赖 java框架,依赖的包肯定是jar文件了,jar包地址http://repo1.maven.org/maven2/com/jcabi/jcabi-ssh/1.1/jcabi-ssh-1.1.jar,如果使用maven管理,可以添加依赖: <dependency> <groupId

Java中的Mongodb单元测试

如何进行Mongodb测试? 我们在java中使用Mongodb作为数据库进行存储的时候,怎么样对于进行测试呢?一种可能直接的方式就是在setUp中getDB,然后在tearDown里面dropDatabase.这样的方式相对来说比较慢.一种更好的方式就是使用fake的数据库,比如embedded的Mongodb用于测试.http://xunitpatterns.com/Test%20Double.html 我们这里使用的是https://github.com/flapdoodle-oss/de

java中操作redis

1 package com.redis; 2 3 import java.io.IOException; 4 import java.util.concurrent.ConcurrentHashMap; 5 6 import redis.clients.jedis.Jedis; 7 import redis.clients.jedis.Transaction; 8 /** 9 * java中操作redis 10 * 11 * @author Administrator 12 * 13 */ 14

Android(java)学习笔记167:Java中操作文件的类介绍

1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creates a new File instance by converting the given pathname string into an abstract pathname. 2)File(File parent, String child)       Creates a new File i

java中操作字符串都有哪些类?它们之间有什么区别?

Java 中,常用的对字符串操作的类有 String.StringBuffer.StringBuilder String : final 修饰,String 类的方法都是返回 new String.即对 String 对象的任何改变都不影响到原对象,对字符串的修改操作都会生成新的对象. StringBuffer : 对字符串的操作的方法都加了synchronized,保证线程安全. StringBuilder : 不保证线程安全,在方法体内需要进行字符串的修改操作,可以 new StringBu

Java连接,操作MongoDB

java连接MongoDB非常的简单,具体来说就2步: 1:向新建的工程中导入java-mongo的驱动包 如图: 2:建立一个链接帮助类,完成链接操作 package com.yc.mongodb; import java.util.Iterator; import java.util.Set; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com

JAVA中操作CLOB大对象 ,提示ORA-01704字符串文字太长

分析:在ORACEL中大文本的不能直接插入,是因为oracle会将clob自动转为String,当文本字节超出4000字节,提示字符太长. 备注:  GBK编码:一个汉字占两个字节. UTF-16编码:通常汉字占两个字节,CJKV扩展B区.扩展C区.扩展D区中的汉字占四个字节(一般字符的Unicode范围是U+0000至U+FFFF,而这些扩展部分的范围大于U+20000,因而要用两个UTF-16). UTF-8编码(变长编码):通常汉字占三个字节,扩展B区以后的汉字占四个字节. ASCII码 

java中操作xml的方法总结

一丶常用方法 主要有3个方面, 1读取xml文件, 2使用xpath根据指定路径获取某一节点数据 3, xml和java bean的转换 XmlUtils.java /** * 和cn.hutool.core.util.XmlUtil许多功能重合, 本类可以当做学习的例子 * 可以直接使用cn.hutool.core.util.XmlUtil * * @author TimFruit * @date 19-11-2 下午5:22 */ public class XmlUtils { // ---