一个简单的MongoDB操作类

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:
复制代码
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);
    }

}
复制代码



本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2012/12/27/2836020.html,如需转载请自行联系原作者

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
4月前
|
NoSQL JavaScript 前端开发
如何使用 Node.js 连接和操作 MongoDB 数据库?
如何使用 Node.js 连接和操作 MongoDB 数据库?
220 2
|
3月前
|
NoSQL MongoDB Python
深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析
使用 sort() 方法对结果进行升序或降序排序。 sort() 方法接受一个参数用于“字段名”,一个参数用于“方向”(升序是默认方向)。
67 0
|
16天前
|
缓存 NoSQL 关系型数据库
【MongoDB】MongoDB更新操作时是否立刻fsync到磁盘?
【4月更文挑战第2天】【MongoDB】MongoDB更新操作时是否立刻fsync到磁盘?
|
17天前
|
消息中间件 NoSQL Kafka
云原生最佳实践系列 5:基于函数计算 FC 实现阿里云 Kafka 消息内容控制 MongoDB DML 操作
该方案描述了一个大数据ETL流程,其中阿里云Kafka消息根据内容触发函数计算(FC)函数,执行针对MongoDB的增、删、改操作。
|
3月前
|
机器学习/深度学习 自然语言处理 NoSQL
|
3月前
|
存储 NoSQL MongoDB
Python小姿势 - Python操作MongoDB数据库
Python小姿势 - Python操作MongoDB数据库
|
6月前
|
NoSQL API MongoDB
Python使用PyMongo4.x操作MongoDB总结
PyMongo是一个Python编程语言中用于连接和操作MongoDB数据库的库。它提供了丰富的功能和API,使开发者能够在Python中轻松地进行MongoDB的数据交互和管理。
83 2
|
7月前
|
NoSQL JavaScript Java
MongoDB 入门教程系列之三:使用 Restful API 操作 MongoDB
MongoDB 入门教程系列之三:使用 Restful API 操作 MongoDB
77 0
|
7月前
|
存储 NoSQL Java
MongoDB 入门教程系列之二:使用 Spring Boot 操作 MongoDB
MongoDB 入门教程系列之二:使用 Spring Boot 操作 MongoDB
98 0
|
7月前
|
SQL NoSQL MongoDB
MongoDB 操作(CRUD) 教程—官方原版
MongoDB 操作(CRUD) 教程—官方原版
110 0