首页 > Java开发, 数据库开发 > Mongodb底层java驱动框架工具类使用

Mongodb底层java驱动框架工具类使用

使用MongoDB需要对文档结构进行合理的设计,以满足某些特定需求。比如随机选取文档,使用skip跳过随机个文档就没有在文档中加个随机键,

然后使用某个随机数对文档进行查询高效,随机键还能添加索引,效率更高。合理选择,合理设计。

[java]

  1. import java.net.UnknownHostException;  
  2. import java.util.Date;  
  3. import java.util.List;  
  4.   
  5. import com.mongodb.BasicDBList;  
  6. import com.mongodb.BasicDBObject;  
  7. import com.mongodb.DB;  
  8. import com.mongodb.DBCollection;  
  9. import com.mongodb.DBCursor;  
  10. import com.mongodb.DBObject;  
  11. import com.mongodb.Mongo;  
  12. import com.mongodb.MongoException;  
  13. import com.nerd.mongo.config.ConfigFactory;  
  14. /** 
  15.  * MONGOS 
  16.  * @author chenlongquan 
  17.  * 
  18.  */  
  19. public class MongoUtil {  
  20.       
  21.     private final static ThreadLocal<Mongo> mongos = new ThreadLocal<Mongo>();  
  22.       
  23.     public static DB getdb(){  
  24.         return getMongos().getDB(ConfigFactory.getMongoConfig().getDb());  
  25.     }  
  26.       
  27.     public static Mongo getMongos() {  
  28.         Mongo mongo = mongos.get();  
  29.         if (mongo == null) {  
  30.             try {  
  31.                 mongo = new Mongo(ConfigFactory.getMongoConfig().getIp(),ConfigFactory.getMongoConfig().getPort());  
  32.                 mongos.set(mongo);  
  33.             } catch (UnknownHostException e) {  
  34.                 e.printStackTrace();  
  35.             } catch (MongoException e) {  
  36.                 e.printStackTrace();  
  37.             }  
  38.         }  
  39.         return mongo;  
  40.     }  
  41.       
  42.     public static void close(){  
  43.         Mongo mongo = mongos.get();  
  44.         if(mongo!=null){  
  45.             mongo.close();  
  46.             mongos.remove();  
  47.         }  
  48.     }  
  49.       
  50.       
  51.     /** 
  52.      * 获取集合(表) 
  53.      *  
  54.      * @param collection 
  55.      */  
  56.     public static DBCollection getCollection(String collection) {  
  57.   
  58.         return getdb().getCollection(collection);  
  59.     }  
  60. ......................................................  

下面我们就可以在这上面的基础上对mongodb进行基本的crud操作

例如:

[java]

  1. /** 
  2.      * 插入 
  3.      *  
  4.      * @param collection 
  5.      * @param o 插入 
  6.      *     
  7.      */  
  8.     public static void insert(String collection, DBObject o) {  
  9.           
  10.         getCollection(collection).insert(o);  
  11.     }  
  12.   
  13.     /** 
  14.      * 批量插入 
  15.      *  
  16.      * @param collection 
  17.      * @param list 
  18.      *            插入的列表 
  19.      */  
  20.     public void insertBatch(String collection, List<DBObject> list) {  
  21.   
  22.         if (list == null || list.isEmpty()) {  
  23.             return;  
  24.         }  
  25.   
  26.         getCollection(collection).insert(list);  
  27.   
  28.     }  


测试用例:

[java]

  1. insert("user1",  
  2.                 new BasicDBObject().append("name""admin3").append("type""2").append("score"70)  
  3.                      .append("level"2).append("inputTime"new Date().getTime()));  


工具类使用:

[java]

  1. /** 
  2.      * 删除 
  3.      *  
  4.      * @param collection 
  5.      * @param q 
  6.      *            查询条件 
  7.      */  
  8.     public void delete(String collection, DBObject q) {  
  9.   
  10.         getCollection(collection).remove(q);  
  11.     }  
  12.   
  13.     /** 
  14.      * 批量删除 
  15.      *  
  16.      * @param collection 
  17.      * @param list 
  18.      *            删除条件列表 
  19.      */  
  20.     public void deleteBatch(String collection, List<DBObject> list) {  
  21.   
  22.         if (list == null || list.isEmpty()) {  
  23.             return;  
  24.         }  
  25.   
  26.         for (int i = 0; i < list.size(); i++) {  
  27.             getCollection(collection).remove(list.get(i));  
  28.         }  
  29.     }  
  30.   
  31.       
  32.     /** 
  33.      * 更新 
  34.      *  
  35.      * @param collection 
  36.      * @param q 
  37.      *            查询条件 
  38.      * @param setFields 
  39.      *            更新对象 
  40.      */  
  41.     public static void update(String collection, DBObject q, DBObject setFields) {  
  42.   
  43.         getCollection(collection).updateMulti(q,  
  44.                 new BasicDBObject("$set", setFields));  
  45.     }  
  46.   
  47.     /** 
  48.      * 查找集合所有对象 
  49.      *  
  50.      * @param collection 
  51.      */  
  52.     public static List<DBObject> findAll(String collection) {  
  53.   
  54.         return getCollection(collection).find().toArray();  
  55.     }  
  56.   
  57.     /** 
  58.      * 按顺序查找集合所有对象 
  59.      *  
  60.      * @param collection 
  61.      *            数据集 
  62.      * @param orderBy 
  63.      *            排序 
  64.      */  
  65.     public static List<DBObject> findAll(String collection, DBObject orderBy) {  
  66.   
  67.         return getCollection(collection).find().sort(orderBy)  
  68.                 .toArray();  
  69.     }  
  70.   
  71.     /** 
  72.      * 查找(返回一个对象) 
  73.      *  
  74.      * @param collection 
  75.      * @param q 
  76.      *            查询条件 
  77.      */  
  78.     public static DBObject findOne(String collection, DBObject q) {  
  79.   
  80.         return getCollection(collection).findOne(q);  
  81.     }  
  82.   
  83.     /** 
  84.      * 查找(返回一个对象) 
  85.      *  
  86.      * @param collection 
  87.      * @param q 
  88.      *            查询条件 
  89.      * @param fileds 
  90.      *            返回字段 
  91.      */  
  92.     public static DBObject findOne(String collection, DBObject q, DBObject fileds) {  
  93.   
  94.         return getCollection(collection).findOne(q, fileds);  
  95.     }  
  96.   
  97.       
  98.   
  99.     /** 
  100.      * 分页查找集合对象,返回特定字段 
  101.      *  
  102.      * @param collection 
  103.      * @param q 
  104.      *            查询条件 
  105.      * @param fileds 
  106.      *            返回字段 
  107.      * @pageNo 第n页 
  108.      * @perPageCount 每页记录数 
  109.      */  
  110.     public static List<DBObject> findLess(String collection, DBObject q, DBObject fileds, int pageNo,  
  111.             int perPageCount) {  
  112.   
  113.         return getCollection(collection).find(q, fileds)  
  114.                 .skip((pageNo - 1) * perPageCount).limit(perPageCount)  
  115.                 .toArray();  
  116.     }  

本文固定链接: http://www.devba.com/index.php/archives/6106.html | 开发吧

报歉!评论已关闭.