MongoDBUtil mongodb Java 基础操作工具类

package xxx.utils;

import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.WriteResult;

public class MongoDBUtil {

 private static DB dbConnection = null;
 public static String MONGO_IP = "";
 public static int MONGO_PORT;
 public static String MONGO_DBNAME = "";
 public static String MONGO_COLLECTION = "";
 private static MongoClient mongoClient = null;
 private static Map<String, DBCollection> dbCollectionMap = new ConcurrentHashMap<String, DBCollection>();
 static {
  MONGO_IP = "192.168.0.121";
  MONGO_PORT = 27017;
  MONGO_DBNAME = ""; //你的数据库名
  MONGO_COLLECTION = "accident";//你的collection名
//最好是用下面的读取配置文件
  /**
   * try { // 读取配置文件 Properties prop = new Properties();
   * prop.load(MongoDBUtil.class.getClassLoader().getResourceAsStream(
   * "db/mongo.properties")); // 根据 key 获取 value MONGO_IP =
   * prop.getProperty("mongo_ip"); MONGO_PORT =
   * Integer.parseInt(prop.getProperty("mongo_port")); MONGO_DBNAME =
   * prop.getProperty("mongo_dbname"); MONGO_COLLECTION =
   * prop.getProperty("mongo_collection");
   *
   * } catch (IOException e) { e.printStackTrace();
   * System.err.println("读取mongo.properties出错"); }
   */
 }

 public static MongoClient getMongoClient() {
  if (mongoClient == null) {
   try {
    mongoClient = new MongoClient(MONGO_IP, MONGO_PORT);
    if (null != mongoClient) {
     dbConnection = mongoClient.getDB(MONGO_DBNAME);
    }
   } catch (UnknownHostException e) {
    e.printStackTrace();
   }
  }
  return mongoClient;

 }

 /**
  * get an table
  *
  * @param collectionName
  * @return
  */
 private static DBCollection getDBCollection(String collectionName) {
  MongoDBUtil.getMongoClient();
  DBCollection collection = null;
  if (dbCollectionMap.containsKey(collectionName)) {
   collection = dbCollectionMap.get(collectionName);
  } else {
   collection = MongoDBUtil.dbConnection.getCollection(collectionName);
   if (null != collection) {
    dbCollectionMap.put(collectionName, collection);
   }
  }
  return collection;
 }

 /**
  * check if doc exsit
  *
  * @param collectionName
  *            table name
  * @param query
  *            target document
  */
 public static boolean isDocumentExsit(String collectionName, DBObject query) {
  boolean result = false;
  DBCursor dbCursor = null;
  DBCollection collection = MongoDBUtil.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
  */
 public static List<DBObject> selectDocument(String collectionName,
   DBObject query) {
  List<DBObject> result = new ArrayList<>();
  DBCursor dbCursor = null;
  DBCollection collection = MongoDBUtil.getDBCollection(collectionName);
  if (null != collection) {
   dbCursor = collection.find(query);
   if (null != dbCursor) {
    while (dbCursor.hasNext()) {
     result.add(dbCursor.next());
    }
   }
  }
  return result;
 }

 /**
  * query all
  *
  * @param collectionName
  *            table name
  * @param query
  *            target document
  * @return
  */
 public static List<DBObject> selectAll(String collectionName) {
  List<DBObject> result = new ArrayList<>();
  DBCursor dbCursor = null;
  DBCollection collection = MongoDBUtil.getDBCollection(collectionName);
  if (null != collection) {
   dbCursor = collection.find();
   if (null != dbCursor) {
    while (dbCursor.hasNext()) {
     result.add(dbCursor.next());
    }
   }
  }
  return result;
 }

 /**
  * /** insert an new record
  *
  * @param collectionName
  *            table name
  * @param newDocument
  *            new doc
  * @param query
  *            target document
  */
 public static void insertDocument(String collectionName,
   DBObject newDocument) {
  DBCollection collection = MongoDBUtil.getDBCollection(collectionName);
  if (null != collection) {
   if (!MongoDBUtil.isDocumentExsit(collectionName, newDocument)) {// insert
                   // only
                   // doc
                   // not
                   // exist
    collection.insert(newDocument);
   }
  }
 }

 /**
  *
  * @param collectionName
  * @param documentList
  */
 public static void insertDocument(String collectionName,
   List<DBObject> documentList) {
  DBCollection collection = MongoDBUtil.getDBCollection(collectionName);
  if (null != collection) {
   collection.insert(documentList);
  }
 }

 /**
  * update an document
  *
  * @param collectionName
  * @param query
  *            target document
  * @param updatedDocument
  * @return
  */
 public static boolean updateDocument(String collectionName, DBObject query,
   DBObject updatedDocument) {
  boolean result = false;
  WriteResult writeResult = null;
  DBCollection collection = MongoDBUtil.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
  */
 public static boolean deleteDocument(String collectionName, DBObject query) {
  boolean result = false;
  WriteResult writeResult = null;
  DBCollection collection = MongoDBUtil.getDBCollection(collectionName);
  if (null != collection) {
   writeResult = collection.remove(query);
   if (null != writeResult) {
    if (writeResult.getN() > 0) {
     result = true;
    }
   }
  }
  return result;
 }
/**
*group 要写很复杂的js,不支持集群,尽量少用,使用aggregate代替
*/
 public static DBObject group(String collectionName, DBObject key,
   DBObject cond, DBObject initial, String reduce, String fn) {
  DBCollection collection = MongoDBUtil.getDBCollection(collectionName);
  if (null != collection) {
   return collection.group(key, cond, initial, reduce, fn);
  }
  return null;
 }
/**
*query 查询条件
*keys 要返回的字段
*sorter 排序字段
*/
 public static List<DBObject> selectDocument(String collectionName,
   DBObject query, DBObject keys, DBObject sorter) {
  List<DBObject> result = new ArrayList<>();
  DBCursor dbCursor = null;
  DBCollection collection = MongoDBUtil.getDBCollection(collectionName);
  if (null != collection) {
     dbCursor = collection.find(query, keys);
   if (sorter != null) {
    dbCursor = dbCursor.sort(sorter);
   }
   if (null != dbCursor) {
    result = dbCursor.toArray();
   }
  }
  return result;
 }

 @SuppressWarnings("unchecked")
 public static List<Object> distinct(String collectionName, String key,
   DBObject query) {
  List<Object> list = new ArrayList<Object>();
  DBCollection collection = MongoDBUtil.getDBCollection(collectionName);
  if (null != collection) {
     list = collection.distinct(key, query);
  }
  return list;
 }

 public static List<Object> distinct(String collectionName, String key) {
  return MongoDBUtil.distinct(collectionName, key, null);
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值