java操作mongoDB实现CURD

java操作mongoDB

mongoDB作为一个牛气哄哄的nosql内存数据库,的确有很多优点,对于大数据量、高并发、弱事务的互联网应用,MongoDB可以应对自如。接触到mongoDB 参考了下api实现了增删改查、mongoDB 是面向对象设计,不用写sql语句 直接操作api 方法 就可以实现,这会儿数据库语句写不好的娃娃们有福了。直接贴码:

DataTest.java

package com.zk.db;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import org.bson.types.ObjectId;
import org.junit.Test;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
/**
 * 测试mongodb curd
 * @author zk
 * @time   2015年4月24日23:19:15
 */
public class DataTest {
    // 1.建立一个Mongo的数据库连接对象
    static Mongo connection = null;
    // 2.创建相关数据库的连接
    static DB db = null;

    static {
        try {
            connection = new Mongo("127.0.0.1:27017"); //默认链接地址
        } catch (Exception e) {
            e.printStackTrace();
        }
        db = connection.getDB("one");//获取数据库名称
    }

    /**
     * 测试创建数据文档集合 类似 数据表 person
     * @throws UnknownHostException
     * @throws MongoException
     */
    @Test
    public void test1() throws UnknownHostException, MongoException {
        // 实例化
        MongoDb mongoDb = new MongoDb("one");
        mongoDb.createCollection("person");

    }

    /**
     * 测试添加一条记录
     *
     * @throws UnknownHostException
     * @throws MongoException
     */
    @Test
    public void test2() throws UnknownHostException, MongoException {
        // 实例化
        DBObject p1 = new BasicDBObject();
        p1.put("name", "zk00");
        insert(p1, "person");

    }

    /**
     * 测试添加一条记录
     *
     * @throws UnknownHostException
     * @throws MongoException
     */
    @Test
    public void test3() throws UnknownHostException, MongoException {
        List<DBObject> dbObjects = new ArrayList<DBObject>();
        DBObject zs = new BasicDBObject("name", "zhaosi");
        DBObject zq = new BasicDBObject("name", "zhuqi");
        dbObjects.add(zs);
        dbObjects.add(zq);
        insertBatch(dbObjects, "person");

    }

    /**
     * 测试 根据id 删除一条记录
     *
     * @throws UnknownHostException
     * @throws MongoException
     */
    @Test
    public void test4() throws UnknownHostException, MongoException {

        deleteById("553a5accb9d133bcf4056a40", "person");

    }

    /**
     * 测试 根据条件 删除
     *
     * @throws UnknownHostException
     * @throws MongoException
     */
    @Test
    public void test5() throws UnknownHostException, MongoException {

        DBObject obj = new BasicDBObject();
        obj.put("name", "zk00");
        int count = deleteByDbs(obj, "person");
        System.out.println("删除数据的条数是: " + count);
    }

    /**
     * 测试 更新操作
     *
     * @throws UnknownHostException
     * @throws MongoException
     */
    @Test
    public void test6() throws UnknownHostException, MongoException {
        DBObject obj = new BasicDBObject();
        obj.put("name", "zhaosi");
        DBObject update = new BasicDBObject();
        update.put("$set", new BasicDBObject("name", "nn1"));
        update(obj, update, false, true, "person");
    }

    /**
     * 测试 查询出person集合中的name
     *
     * @throws UnknownHostException
     * @throws MongoException
     */
    @Test
    public void test7() throws UnknownHostException, MongoException {
        DBObject keys = new BasicDBObject();
        keys.put("_id", false);
        keys.put("name", true);
        DBCursor cursor = find(null, keys, "person");
        while (cursor.hasNext()) {
            DBObject object = cursor.next();
            System.out.println(object.get("name"));
        }
    }

    /**
     * 测试 分页
     *
     * @throws UnknownHostException
     * @throws MongoException
     */
    @Test
    public void test8() throws UnknownHostException, MongoException {
        DBCursor cursor = find(null, null, 0, 6, "person");
        while (cursor.hasNext()) {
            DBObject object = cursor.next();
            System.out.print("name=" + object.get("name") + "  ");
            System.out.println("_id=" + object.get("_id"));

        }
    }

    /**
     * 创建一个数据库集合
     *
     * @param collName
     *            集合名称
     * @param db
     *            数据库实例
     */
    public void createCollection(String collName) {
        DBObject dbs = new BasicDBObject();
        db.createCollection("person", dbs);
    }

    /**
     * 为相应的集合添加数据
     *
     * @param dbs
     * @param collName
     */
    public void insert(DBObject dbs, String collName) {
        // 1.得到集合
        DBCollection coll = db.getCollection(collName);
        // 2.插入操作
        coll.insert(dbs);
    }

    /**
     * 为集合批量插入数据
     *
     * @param dbses
     * @param collName
     */
    public void insertBatch(List<DBObject> dbses, String collName) {
        DBCollection coll = db.getCollection(collName);
        coll.insert(dbses);
    }

    /**
     * 根据id删除数据
     *
     * @param id
     * @param collName
     * @return 返回影响的数据条数
     */
    public int deleteById(String id, String collName) {
        DBCollection coll = db.getCollection(collName);
        DBObject dbs = new BasicDBObject("_id", new ObjectId(id));
        int count = coll.remove(dbs).getN();
        return count;
    }

    /**
     * 根据条件删除数据
     *
     * @param id
     * @param collName
     * @return 返回影响的数据条数
     */
    public int deleteByDbs(DBObject dbs, String collName) {
        DBCollection coll = db.getCollection(collName);
        int count = coll.remove(dbs).getN();
        return count;
    }

    /**
     * 更新数据
     *
     * @param find
     *            查询器
     * @param update
     *            更新器
     * @param upsert
     *            更新或插入
     * @param multi
     *            是否批量更新
     * @param collName
     *            集合名称
     * @return 返回影响的数据条数
     */
    public int update(DBObject find, DBObject update, boolean upsert,
            boolean multi, String collName) {
        DBCollection coll = db.getCollection(collName);
        int count = coll.update(find, update, upsert, multi).getN();
        return count;
    }

    /**
     * 查询(分页)
     * @param ref
     * @param keys
     * @param start
     * @param limit
     * @return
     */
    public DBCursor find(DBObject ref, DBObject keys, int start, int limit,
            String collName) {
        DBCursor cur = find(ref, keys, collName);
        return cur.limit(limit).skip(start);
    }

    /**
     * 查询 (不分页)
     * @param ref
     * @param keys
     * @param start
     * @param limit
     * @param collName
     * @return
     */
    public DBCursor find(DBObject ref, DBObject keys, String collName) {
        DBCollection coll = db.getCollection(collName);
        DBCursor cur = coll.find(ref, keys);
        return cur;
    }
}

注意:connection.close();最后别忘记调用,另外 做过java的同学都知道连接池 以及释放回收链接问题。mongodb自动内部实现了连接池。不需要再考虑该问题,也可以自行实现设置。

时间: 2024-10-10 20:30:40

java操作mongoDB实现CURD的相关文章

使用Java操作MongoDB

该篇比较简单,仅介绍Java操作MongoDB的简单CRUD案例,开搞前需要引入mongo-java-driver-3.2.2.jar,Java操作MongoDB的API众多,高级功能还需查询官方文档. public void insert() { // 建立数据库连接 Mongo mongo = new Mongo("localhost", 27017); // 获取指定的数据库 DB db = mongo.getDB("kaiye"); // 获取指定的集合 D

Java操作MongoDB

先引入mongo-java-dirver驱动 <!-- mongo-java-dirver --> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.4.2</version> </dependency> 代码操作演示: package com.simpl

【MongoDB for Java】Java操作MongoDB

开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开发依赖库: JavaEE5.mongo-2.5.3.jar.junit-4.8.2.jar 一.准备工作 1. 首先,下载mongoDB对Java支持的驱动包 驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads mongoDB对Java的相关支持.技术:http://www.mongodb.org/

java操作mongodb(连接池)(转)

原文链接: java操作mongodb(连接池) Mongo的实例其实就是一个数据库连接池,这个连接池里默认有10个链接.我们没有必要重新实现这个链接池,但是我们可以更改这个连接池的配置.因为Mongo的实例就是一个连接池,所以,项目中最好只存在一个Mongo的实例. 常见的配置参数: connectionsPerHost:每个主机的连接数 threadsAllowedToBlockForConnectionMultiplier:线程队列数,它以上面connectionsPerHost值相乘的结

[转载]使用Java操作Mongodb

HelloWorld程序 学习任何程序的第一步,都是编写HelloWorld程序,我们也不例外,看下如何通过Java编写一个HelloWorld的程序. 首先,要通过Java操作Mongodb,必须先下载Mongodb的Java驱动程序,可以在这里下载. 新建立一个Java工程,将下载的驱动程序放在库文件路径下,程序代码如下: 1 package com.mkyong.core; 2 import java.net.UnknownHostException; 3 import com.mongo

MongDB基础学习(七)—— 【MongoDB for Java】Java操作MongoDB

[MongoDB for Java]Java操作MongoDB 开发的产品为了融资,不停得改版,从第一版到现在最新版本,最后发现公司发展方向都变了,有最初电子商务改成VR内容提供者(没办法,要别人钱,就得按照别人的规划的战略走).本来本章节会放到后面再做讲解,无奈,部门需要做一次培训任务,我就想到拿Java操作MongoDB作为培训内容,开发环境和依赖jar如下: (1)开发环境: System:Windows IDE:eclipse Database:mongoDB2.6 Maven:apac

学习MongoDB--(11):应用举例(利用java操作MongoDB)

原文地址:http://blog.csdn.net/drifterj/article/details/7948090 目录地址:http://blog.csdn.net/DrifterJ/article/category/1191327/2 前面我们都是通过shell来操作存取MongoDB的数据,shell中使用的语言就是javascript.我们这次说一下如何通过Java来访问操作MongoDB数据库的. Java驱动程序是MongoDB最早的驱动,已用于生产环境很长时间,十分稳定.可以到M

深入浅出MongoDB(六)java操作mongodb增删改查

java操作mysql数据库的代码我们已经了如指掌了,增删改查,java对mongodb数据库也是类似的操作,先是数据库连接,再是进行操作. 首先我们进入进入admin数据库,然后建立自己的数据库testMongoDb,进入admin数据库后,就可以直接进入testMongoDb,因为用户可以进入系统的数据库,就是超级管理员,use testMongoDb后,为该数据库设置用户名和密码,db.addUser('root','root'),这样我们在程序中连该数据库,并实现增删改查,代码如下所示.

Java操作Mongodb 保存/读取java对象到/从mongodb

Mongodb官方提供的Java驱动,保存与读取,需要的者是DBObject对象,这是一个接口,实现put,get等方法,跟map类似,如果我们要直接把普通的java对象保存到mongodb,就需要先转换成DBObject对象,或者直接实现DBObject接口,操作起来相当复杂.还好,monodb驱动带了把json转换成DBObject对象的功能,加上Google的Gson,就可以实现把普通的对象保存到mongodb中.如果要从mogodb中读出对象,反过来操作即可,但有一点需要注意的是,mon