MongoDB- Java API 增删改操作


MongoDB- Java API 增删改操作

  1. package com.x.mongodb;  
  2.   
  3. import java.net.UnknownHostException;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7.   
  8. import org.bson.types.ObjectId;  
  9.   
  10. import com.mongodb.BasicDBObject;  
  11. import com.mongodb.DB;  
  12. import com.mongodb.DBCollection;  
  13. import com.mongodb.DBObject;  
  14. import com.mongodb.Mongo;  
  15. import com.mongodb.MongoException;  
  16.   
  17.   
  18. public final class MongoDBUtil {  
  19.   
  20.     private static final String HOST = "127.0.0.1";  
  21.   
  22.     private static final String dbName = "test";  
  23.   
  24.     private static Mongo mongo;  
  25.   
  26.     private static DB db;  
  27.   
  28.     static {  
  29.         try {  
  30.             mongo = new Mongo(HOST);  
  31.             db = mongo.getDB(dbName);  
  32.             // db.authenticate(username, passwd)   
  33.         } catch (UnknownHostException e) {  
  34.             e.printStackTrace();  
  35.         } catch (MongoException e) {  
  36.             e.printStackTrace();  
  37.         }  
  38.     }  
  39.   
  40.     private MongoDBUtil() {  
  41.     }  
  42.   
  43.     /** 
  44.      * 添加操作 
  45.      * <br>------------------------------<br> 
  46.      * @param map 
  47.      * @param collectionName 
  48.      */  
  49.     public static void add(Map<String, Object> map, String collectionName) {  
  50.         DBObject dbObject = new BasicDBObject(map);  
  51.         getCollection(collectionName).insert(dbObject);  
  52.     }  
  53.       
  54.     /** 
  55.      * 添加操作 
  56.      * <br>------------------------------<br> 
  57.      * @param list 
  58.      * @param collectionName 
  59.      */  
  60.     public static void add(List<Map<String, Object>> list, String collectionName) {  
  61.         for (Map<String, Object> map : list) {  
  62.             add(map, collectionName);  
  63.         }  
  64.     }  
  65.       
  66.     /** 
  67.      * 删除操作 
  68.      * <br>------------------------------<br> 
  69.      * @param map 
  70.      * @param collectionName 
  71.      */  
  72.     public static void delete(Map<String, Object> map, String collectionName) {  
  73.         DBObject dbObject = new BasicDBObject(map);  
  74.         getCollection(collectionName).remove(dbObject);  
  75.     }  
  76.       
  77.     /** 
  78.      * 删除操作,根据主键 
  79.      * <br>------------------------------<br> 
  80.      * @param id             
  81.      * @param collectionName 
  82.      */  
  83.     public static void delete(String id, String collectionName) {  
  84.         Map<String, Object> map = new HashMap<String, Object>();  
  85.         map.put("_id"new ObjectId(id));  
  86.         delete(map, collectionName);  
  87.     }  
  88.       
  89.     /** 
  90.      * 删除全部 
  91.      * <br>------------------------------<br> 
  92.      * @param collectionName 
  93.      */  
  94.     public static void deleteAll(String collectionName) {  
  95.         getCollection(collectionName).drop();  
  96.     }  
  97.       
  98.     /** 
  99.      * 修改操作</br> 
  100.      * 会用一个新文档替换现有文档,文档key结构会发生改变</br> 
  101.      * 比如原文档{"_id":"123","name":"zhangsan","age":12}当根据_id修改age  
  102.      * value为{"age":12}新建的文档name值会没有,结构发生了改变 
  103.      * <br>------------------------------<br> 
  104.      * @param whereMap       
  105.      * @param valueMap       
  106.      * @param collectionName 
  107.      */  
  108.     public static void update(Map<String, Object> whereMap, Map<String, Object> valueMap, String collectionName) {  
  109.         executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){  
  110.             public DBObject doCallback(DBObject valueDBObject) {  
  111.                 return valueDBObject;  
  112.             }  
  113.         });  
  114.     }   
  115.       
  116.     /** 
  117.      * 修改操作,使用$set修改器</br> 
  118.      * 用来指定一个键值,如果键不存在,则自动创建,会更新原来文档, 不会生成新的, 结构不会发生改变 
  119.      * <br>------------------------------<br> 
  120.      * @param whereMap       
  121.      * @param valueMap       
  122.      * @param collectionName 
  123.      */  
  124.     public static void updateSet(Map<String, Object> whereMap, Map<String, Object> valueMap, String collectionName) {  
  125.         executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){  
  126.             public DBObject doCallback(DBObject valueDBObject) {  
  127.                 return new BasicDBObject("$set", valueDBObject);  
  128.             }  
  129.         });  
  130.     }   
  131.       
  132.     /** 
  133.      * 修改操作,使用$inc修改器</br> 
  134.      * 修改器键的值必须为数字</br> 
  135.      * 如果键存在增加或减少键的值, 如果不存在创建键 
  136.      * <br>------------------------------<br> 
  137.      * @param whereMap       
  138.      * @param valueMap       
  139.      * @param collectionName 
  140.      */  
  141.     public static void updateInc(Map<String, Object> whereMap, Map<String, Integer> valueMap, String collectionName) {  
  142.         executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){  
  143.             public DBObject doCallback(DBObject valueDBObject) {  
  144.                 return new BasicDBObject("$inc", valueDBObject);  
  145.             }  
  146.         });  
  147.     }   
  148.       
  149.     /** 
  150.      * 修改 
  151.      * <br>------------------------------<br> 
  152.      * @param collectionName 
  153.      * @param whereMap 
  154.      * @param valueMap 
  155.      * @param updateCallback 
  156.      */  
  157.     private static void executeUpdate(String collectionName, Map whereMap, Map valueMap, UpdateCallback updateCallback) {  
  158.         DBObject whereDBObject = new BasicDBObject(whereMap);  
  159.         DBObject valueDBObject = new BasicDBObject(valueMap);  
  160.         valueDBObject = updateCallback.doCallback(valueDBObject);  
  161.         getCollection(collectionName).update(whereDBObject, valueDBObject);  
  162.     }  
  163.       
  164.     interface UpdateCallback {  
  165.           
  166.         DBObject doCallback(DBObject valueDBObject);  
  167.     }  
  168.       
  169.     /** 
  170.      * 获取集合(表) 
  171.      * <br>------------------------------<br> 
  172.      * @param collectionName 
  173.      * @return 
  174.      */  
  175.     public static DBCollection getCollection(String collectionName) {  
  176.         return db.getCollection(collectionName);  
  177.     }  
  178. }  

相关内容