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自動內部實現了連接池。不需要再考慮該問題,也可以自行實現設置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章