天天看點

一個簡單的MongoDB操作類

複制代碼

import java.net.UnknownHostException;

import java.util.Map;

import java.util.concurrent.ConcurrentHashMap;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

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.WriteResult;

import com.mongodb.util.JSON;

/**

 * MongoDB操作類

 * @author dyk

 *

 */

public class MongoDbManagerImpl implements MongoDbManager{

    protected static Logger logger = LoggerFactory.getLogger("03046");

    private static final String DBNAME = "clementine";

    private Mongo mongo = null;

    private DB dbConnection = null;

    private String mongoServerAddr;

    private int mongoServerPort;

    private static Map<String, DBCollection> dbCollectionMap = new ConcurrentHashMap<String, DBCollection>();

    public void setMongoServerAddr(String mongoServerAddr) {

        this.mongoServerAddr = mongoServerAddr;

    }

    public void setMongoServerPort(int mongoServerPort) {

        this.mongoServerPort = mongoServerPort;

    public void init() {

        if (this.mongo == null) {

            try {

                this.mongo = new Mongo( this.mongoServerAddr , this.mongoServerPort);

                if (null != this.mongo) {

                    this.dbConnection = this.mongo.getDB(DBNAME);

                }

            } catch (UnknownHostException e) {

                logger.error("連接配接mongoDb失敗, 伺服器位址: " + this.mongoServerAddr + ", 端口: " + this.mongoServerPort);

                throw new RuntimeException(e);

            }

        }

    /**

     * get an table 

     * @param collectionName

     * @return

     */

    private DBCollection getDBCollection(String collectionName) {

        DBCollection collection = null;

        if (dbCollectionMap.containsKey(collectionName)) {

            collection = dbCollectionMap.get(collectionName);

        } else {

            collection = this.dbConnection.getCollection(collectionName);

            if (null != collection) {

                dbCollectionMap.put(collectionName, collection);

        return collection;

     * check if doc exsit

     * @param collectionName table name

     * @param query target document

    @Override

    public boolean isDocumentExsit(String collectionName, DBObject query) {

        boolean result = false;

        DBCursor dbCursor = null;

        DBCollection collection = this.getDBCollection(collectionName);

        if (null != collection) {

            dbCursor = collection.find(query);

            if (null != dbCursor && dbCursor.hasNext()) {

                result = true;

        return result;

     * query an record

    public DBObject selectDocument(String collectionName, DBObject query) {

        DBObject result = null;

                result = dbCursor.next();

     *     /**

     * insert an new record

     * @param newDocument new doc

    public void insertDocument(String collectionName, DBObject newDocument) {

            if (!this.isDocumentExsit(collectionName, newDocument)) {//insert only doc not exist 

                collection.insert(newDocument);

     * update an document

     * @param updatedDocument

    public boolean updateDocument(String collectionName, DBObject query, DBObject updatedDocument) {

        WriteResult writeResult = null;

            writeResult = collection.update(query, updatedDocument);

            if (null != writeResult) {

                if (writeResult.getN() > 0) {

                    result = true;

     * delete an document

     * @param document target document

    public boolean deleteDocument(String collectionName, DBObject query) {

            writeResult = collection.remove(query);

    public static void main(String[] args) throws UnknownHostException {

        MongoDbManagerImpl m = new MongoDbManagerImpl();

        m.setMongoServerAddr("10.235.164.180");

        m.setMongoServerPort(27017);

        m.init();

        String collectionName = "myTest";

        //insert

        String json ="{'num' : 1}";

        DBObject doc1 =(DBObject)JSON.parse(json);

        m.insertDocument(collectionName, doc1);

        //select

        DBObject doc2 = null;

        DBObject query = new BasicDBObject();

        query.put("num", 1);

        doc2 = m.selectDocument(collectionName, query);

        System.out.println(doc2);

        //update

        DBObject updatedDocument = new BasicDBObject();

        updatedDocument.put("$set", new BasicDBObject().append("num", 100));

        boolean result = m.updateDocument(collectionName, query, updatedDocument);

        System.out.println(result);

        query.put("num", 100);

//        //remove

        result = m.deleteDocument(collectionName, query);

}

本文轉自Phinecos(洞庭散人)部落格園部落格,原文連結:http://www.cnblogs.com/phinecos/archive/2012/12/27/2836020.html,如需轉載請自行聯系原作者