packagecom.ycmedia.utils;importjava.net.UnknownHostException;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.bson.types.ObjectId;importcom.mongodb.BasicDBObject;importcom.mongodb.DB;importcom.mongodb.DBCollection;importcom.mongodb.DBObject;importcom.mongodb.Mongo;importcom.mongodb.MongoException;
@SuppressWarnings("deprecation")public final classMongoDbUtil {private static final String HOST = "180.97.75.185:38017";private static final String dbName = "yc";private staticMongo mongo;private staticDB db;static{try{
mongo= newMongo(HOST);
db=mongo.getDB(dbName);//db.authenticate(username, passwd)
} catch(UnknownHostException e) {
e.printStackTrace();
}catch(MongoException e) {
e.printStackTrace();
}
}privateMongoDbUtil() {
}/*** 添加操作
*
*@parammap
*@paramcollectionName*/
public static void add(Mapmap, String collectionName) {
DBObject dbObject= newBasicDBObject(map);
getCollection(collectionName).insert(dbObject);
}/*** 添加操作
*
*@paramlist
*@paramcollectionName*/
public static void add(List>list, String collectionName) {for (Mapmap : list) {
add(map, collectionName);
}
}/*** 删除操作
*
*@parammap
*@paramcollectionName*/
public static void delete(Mapmap, String collectionName) {
DBObject dbObject= newBasicDBObject(map);
getCollection(collectionName).remove(dbObject);
}/*** 删除操作,根据主键
*
*@paramid
*@paramcollectionName*/
public static voiddelete(String id, String collectionName) {
Map map = new HashMap();
map.put("_id", newObjectId(id));
delete(map, collectionName);
}/*** 删除全部
*
*@paramcollectionName*/
public static voiddeleteAll(String collectionName) {
getCollection(collectionName).drop();
}/*** 修改操作
* 会用一个新文档替换现有文档,文档key结构会发生改变
* 比如原文档{"_id":"123","name":"zhangsan","age":12}当根据_id修改age
* value为{"age":12}新建的文档name值会没有,结构发生了改变
*
*@paramwhereMap
*@paramvalueMap
*@paramcollectionName*/
public static void update(Map whereMap, MapvalueMap, String collectionName) {
executeUpdate(collectionName, whereMap, valueMap,newUpdateCallback(){publicDBObject doCallback(DBObject valueDBObject) {returnvalueDBObject;
}
});
}/*** 修改操作,使用$set修改器
* 用来指定一个键值,如果键不存在,则自动创建,会更新原来文档, 不会生成新的, 结构不会发生改变
*
*@paramwhereMap
*@paramvalueMap
*@paramcollectionName*/
public static void updateSet(Map whereMap, MapvalueMap, String collectionName) {
executeUpdate(collectionName, whereMap, valueMap,newUpdateCallback(){publicDBObject doCallback(DBObject valueDBObject) {return new BasicDBObject("$set", valueDBObject);
}
});
}/*** 修改操作,使用$inc修改器
* 修改器键的值必须为数字
* 如果键存在增加或减少键的值, 如果不存在创建键
*
*@paramwhereMap
*@paramvalueMap
*@paramcollectionName*/
public static void updateInc(Map whereMap, MapvalueMap, String collectionName) {
executeUpdate(collectionName, whereMap, valueMap,newUpdateCallback(){publicDBObject doCallback(DBObject valueDBObject) {return new BasicDBObject("$inc", valueDBObject);
}
});
}/*** 修改
*
*@paramcollectionName
*@paramwhereMap
*@paramvalueMap
*@paramupdateCallback*/
private static voidexecuteUpdate(String collectionName, Map whereMap, Map valueMap, UpdateCallback updateCallback) {
DBObject whereDBObject= newBasicDBObject(whereMap);
DBObject valueDBObject= newBasicDBObject(valueMap);
valueDBObject=updateCallback.doCallback(valueDBObject);
getCollection(collectionName).update(whereDBObject, valueDBObject);
}interfaceUpdateCallback {
DBObject doCallback(DBObject valueDBObject);
}/*** 获取集合(表)
*
*@paramcollectionName
*@return
*/
public staticDBCollection getCollection(String collectionName) {returndb.getCollection(collectionName);
}public static voidmain(String[] args) {
DBCollection collection= getCollection("url");
BasicDBObject queryObject= new BasicDBObject("urlMd5","bfa89e563d9509fbc5c6503dd50faf2e");
DBObject obj=collection.findOne(queryObject);
System.out.println(obj);
}
}