Mongodb底層java驅動框架工具類使用
使用MongoDB需要對文檔結構進行合理的設計,以滿足某些特定需求。比如隨機選取文檔,使用skip跳過隨機個文檔就沒有在文檔中加個隨機鍵,
然后使用某個隨機數對文檔進行查詢高效,隨機鍵還能添加索引,效率更高。合理選擇,合理設計。
import java.net.UnknownHostException;
import java.util.Date;
import java.util.List;import com.mongodb.BasicDBList; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; import com.nerd.mongo.config.ConfigFactory; /** * MONGOS * @author chenlongquan * */ public class MongoUtil { private final static ThreadLocal<Mongo> mongos = new ThreadLocal<Mongo>(); public static DB getdb(){ return getMongos().getDB(ConfigFactory.getMongoConfig().getDb()); } public static Mongo getMongos() { Mongo mongo = mongos.get(); if (mongo == null) { try { mongo = new Mongo(ConfigFactory.getMongoConfig().getIp(),ConfigFactory.getMongoConfig().getPort()); mongos.set(mongo); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } } return mongo; } public static void close(){ Mongo mongo = mongos.get(); if(mongo!=null){ mongo.close(); mongos.remove(); } } /** * 獲取集合(表) * * @param collection */ public static DBCollection getCollection(String collection) { return getdb().getCollection(collection); } ...................................................... </pre><a style="text-indent:0px;" title="派生到我的代碼片" href="/misc/goto?guid=4959620647803020208" target="_blank"></a></div>
</div>
</div> 下面我們就可以在這上面的基礎上對mongodb進行基本的crud操作
例如:
/*** 插入 * * @param collection * @param o 插入 * */ public static void insert(String collection, DBObject o) { getCollection(collection).insert(o); } /** * 批量插入 * * @param collection * @param list * 插入的列表 */ public void insertBatch(String collection, List<DBObject> list) { if (list == null || list.isEmpty()) { return; } getCollection(collection).insert(list); } </pre><a style="text-indent:0px;" title="派生到我的代碼片" href="/misc/goto?guid=4959620647803020208" target="_blank"></a></div>
</div>
</div>
測試用例:insert("user1", new BasicDBObject().append("name", "admin3").append("type", "2").append("score", 70) .append("level", 2).append("inputTime", new Date().getTime()));
工具類使用:/*** 刪除 * * @param collection * @param q * 查詢條件 */ public void delete(String collection, DBObject q) { getCollection(collection).remove(q); } /** * 批量刪除 * * @param collection * @param list * 刪除條件列表 */ public void deleteBatch(String collection, List<DBObject> list) { if (list == null || list.isEmpty()) { return; } for (int i = 0; i < list.size(); i++) { getCollection(collection).remove(list.get(i)); } } /** * 更新 * * @param collection * @param q * 查詢條件 * @param setFields * 更新對象 */ public static void update(String collection, DBObject q, DBObject setFields) { getCollection(collection).updateMulti(q, new BasicDBObject("$set", setFields)); } /** * 查找集合所有對象 * * @param collection */ public static List<DBObject> findAll(String collection) { return getCollection(collection).find().toArray(); } /** * 按順序查找集合所有對象 * * @param collection * 數據集 * @param orderBy * 排序 */ public static List<DBObject> findAll(String collection, DBObject orderBy) { return getCollection(collection).find().sort(orderBy) .toArray(); } /** * 查找(返回一個對象) * * @param collection * @param q * 查詢條件 */ public static DBObject findOne(String collection, DBObject q) { return getCollection(collection).findOne(q); } /** * 查找(返回一個對象) * * @param collection * @param q * 查詢條件 * @param fileds * 返回字段 */ public static DBObject findOne(String collection, DBObject q, DBObject fileds) { return getCollection(collection).findOne(q, fileds); } /** * 分頁查找集合對象,返回特定字段 * * @param collection * @param q * 查詢條件 * @param fileds * 返回字段 * @pageNo 第n頁 * @perPageCount 每頁記錄數 */ public static List<DBObject> findLess(String collection, DBObject q, DBObject fileds, int pageNo, int perPageCount) { return getCollection(collection).find(q, fileds) .skip((pageNo - 1) * perPageCount).limit(perPageCount) .toArray(); } </pre><a style="text-indent:0px;" title="派生到我的代碼片" href="/misc/goto?guid=4959620647803020208" target="_blank"></a></div>
</div>
</div> 來自:http://blog.csdn.net/u012516914/article/details/41801573
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!相關經驗
相關資訊
相關文檔
目錄
sesese色