Mongodb底層java驅動架構工具類使用

來源:互聯網
上載者:User

標籤:mongodb工具類   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);}......................................................
下面我們就可以在這上面的基礎上對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);}

測試案例:

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();}


Mongodb底層java驅動架構工具類使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.