一个简单的MongoDB操作类

来源:互联网 发布:给大一新生的建议知乎 编辑:程序博客网 时间:2024/05/30 12:03
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 */@Overridepublic 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 */@Overridepublic 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 */@Overridepublic 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 */@Overridepublic 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 */@Overridepublic 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";//insertString json ="{'num' : 1}";DBObject doc1 =(DBObject)JSON.parse(json);m.insertDocument(collectionName, doc1);//selectDBObject doc2 = null;DBObject query = new BasicDBObject();query.put("num", 1);doc2 = m.selectDocument(collectionName, query);System.out.println(doc2);//updateDBObject 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);////removeresult = m.deleteDocument(collectionName, query);System.out.println(result);}}

原创粉丝点击