惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
F
Fortinet All Blogs
B
Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
腾讯CDC
小众软件
小众软件
G
Google Developers Blog
V
Visual Studio Blog
罗磊的独立博客
GbyAI
GbyAI
V
V2EX
大猫的无限游戏
大猫的无限游戏
H
Help Net Security
L
LangChain Blog
Engineering at Meta
Engineering at Meta
量子位
The GitHub Blog
The GitHub Blog
博客园 - 司徒正美
WordPress大学
WordPress大学
B
Blog RSS Feed

博客园 - Phinecos(洞庭散人)

火车票秒杀攻略 go-home源码分析----一款针对12306的火车票订票软件 Solr Cache使用介绍及分析 每日学习笔记(26) 每日学习笔记(25) 每日学习笔记(24) 深入剖析SolrCloud(四) 深入剖析SolrCloud(三) 深入剖析SolrCloud(二) 深入剖析SolrCloud(一) 技术宅---我的网上抢火车票攻略(终极秒杀版) 技术宅---我的网上抢火车票攻略 一次针对批量查询处理的优化 每日学习笔记(23) 一次内存泄露问题的排查 每日学习笔记(22) 每日学习笔记(21) 每日学习笔记(20) 每日学习笔记(19)
一个简单的MongoDB操作类
Phinecos(洞庭散人) · 2012-12-27 · via 博客园 - Phinecos(洞庭散人)
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);
    }

}