mongodb工具类

来源:互联网 发布:卖跑步装备的淘宝店 编辑:程序博客网 时间:2024/05/27 20:21
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     * @param collectionName table name     * @param query target document     * @return     */    @Override    public DBObject selectDocument(String collectionName, DBObject query) {        DBObject result = null;        DBCursor dbCursor = null;        DBCollection collection = this.getDBCollection(collectionName);        if (null != collection) {            dbCursor = collection.find(query);            if (null != dbCursor && dbCursor.hasNext()) {                result = dbCursor.next();            }        }        return result;    }    /**     *     /**     * insert an new record     * @param collectionName table name     * @param newDocument new doc     * @param query target document     */    @Override    public void insertDocument(String collectionName, DBObject newDocument) {        DBCollection collection = this.getDBCollection(collectionName);        if (null != collection) {            if (!this.isDocumentExsit(collectionName, newDocument)) {//insert only doc not exist                 collection.insert(newDocument);            }        }    }    /**     * update an document     * @param collectionName     * @param query target document     * @param updatedDocument     * @return     */    @Override    public boolean updateDocument(String collectionName, DBObject query, DBObject updatedDocument) {        boolean result = false;        WriteResult writeResult = null;        DBCollection collection = this.getDBCollection(collectionName);        if (null != collection) {            writeResult = collection.update(query, updatedDocument);            if (null != writeResult) {                if (writeResult.getN() > 0) {                    result = true;                }            }        }        return result;    }    /**     * delete an document     * @param collectionName     * @param document target document     * @return     */    @Override    public boolean deleteDocument(String collectionName, DBObject query) {        boolean result = false;        WriteResult writeResult = null;        DBCollection collection = this.getDBCollection(collectionName);        if (null != collection) {            writeResult = collection.remove(query);            if (null != writeResult) {                if (writeResult.getN() > 0) {                    result = true;                }            }        }        return result;    }    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);        System.out.println(result);    }}
0 0
原创粉丝点击