您的位置:首页 > 数据库 > Mongodb

mongodb- Java API 增删改操作

2014-09-17 18:06 417 查看
[java] view
plaincopyprint?

package com.x.mongodb;

import java.net.UnknownHostException;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.bson.types.ObjectId;

import com.mongodb.BasicDBObject;

import com.mongodb.DB;

import com.mongodb.DBCollection;

import com.mongodb.DBObject;

import com.mongodb.Mongo;

import com.mongodb.MongoException;

public final class MongoDBUtil {

private static final String HOST = "127.0.0.1";

private static final String dbName = "test";

private static Mongo mongo;

private static DB db;

static {

try {

mongo = new Mongo(HOST);

db = mongo.getDB(dbName);

// db.authenticate(username, passwd)

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (MongoException e) {

e.printStackTrace();

}

}

private MongoDBUtil() {

}

/**

* 添加操作

* <br>------------------------------<br>

* @param map

* @param collectionName

*/

public static void add(Map<String, Object> map, String collectionName) {

DBObject dbObject = new BasicDBObject(map);

getCollection(collectionName).insert(dbObject);

}

/**

* 添加操作

* <br>------------------------------<br>

* @param list

* @param collectionName

*/

public static void add(List<Map<String, Object>> list, String collectionName) {

for (Map<String, Object> map : list) {

add(map, collectionName);

}

}

/**

* 删除操作

* <br>------------------------------<br>

* @param map

* @param collectionName

*/

public static void delete(Map<String, Object> map, String collectionName) {

DBObject dbObject = new BasicDBObject(map);

getCollection(collectionName).remove(dbObject);

}

/**

* 删除操作,根据主键

* <br>------------------------------<br>

* @param id

* @param collectionName

*/

public static void delete(String id, String collectionName) {

Map<String, Object> map = new HashMap<String, Object>();

map.put("_id", new ObjectId(id));

delete(map, collectionName);

}

/**

* 删除全部

* <br>------------------------------<br>

* @param collectionName

*/

public static void deleteAll(String collectionName) {

getCollection(collectionName).drop();

}

/**

* 修改操作</br>

* 会用一个新文档替换现有文档,文档key结构会发生改变</br>

* 比如原文档{"_id":"123","name":"zhangsan","age":12}当根据_id修改age

* value为{"age":12}新建的文档name值会没有,结构发生了改变

* <br>------------------------------<br>

* @param whereMap

* @param valueMap

* @param collectionName

*/

public static void update(Map<String, Object> whereMap, Map<String, Object> valueMap, String collectionName) {

executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){

public DBObject doCallback(DBObject valueDBObject) {

return valueDBObject;

}

});

}

/**

* 修改操作,使用$set修改器</br>

* 用来指定一个键值,如果键不存在,则自动创建,会更新原来文档, 不会生成新的, 结构不会发生改变

* <br>------------------------------<br>

* @param whereMap

* @param valueMap

* @param collectionName

*/

public static void updateSet(Map<String, Object> whereMap, Map<String, Object> valueMap, String collectionName) {

executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){

public DBObject doCallback(DBObject valueDBObject) {

return new BasicDBObject("$set", valueDBObject);

}

});

}

/**

* 修改操作,使用$inc修改器</br>

* 修改器键的值必须为数字</br>

* 如果键存在增加或减少键的值, 如果不存在创建键

* <br>------------------------------<br>

* @param whereMap

* @param valueMap

* @param collectionName

*/

public static void updateInc(Map<String, Object> whereMap, Map<String, Integer> valueMap, String collectionName) {

executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){

public DBObject doCallback(DBObject valueDBObject) {

return new BasicDBObject("$inc", valueDBObject);

}

});

}

/**

* 修改

* <br>------------------------------<br>

* @param collectionName

* @param whereMap

* @param valueMap

* @param updateCallback

*/

private static void executeUpdate(String collectionName, Map whereMap, Map valueMap, UpdateCallback updateCallback) {

DBObject whereDBObject = new BasicDBObject(whereMap);

DBObject valueDBObject = new BasicDBObject(valueMap);

valueDBObject = updateCallback.doCallback(valueDBObject);

getCollection(collectionName).update(whereDBObject, valueDBObject);

}

interface UpdateCallback {

DBObject doCallback(DBObject valueDBObject);

}

/**

* 获取集合(表)

* <br>------------------------------<br>

* @param collectionName

* @return

*/

public static DBCollection getCollection(String collectionName) {

return db.getCollection(collectionName);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: