MongoDB初探系列之四:MongoDB與Java共舞
阿新 • • 發佈:2017-06-26
ever 文件 basic query find man mongodb next() 入學
4、調用demo
興許再深入學習,先用demo上上手哇。哈哈。
因為版本號不同,可能API也有所不同。本次學習用的是3.0版本號。
1、使用的mongodb的jdbc驅動版本號為:mongo-java-driver-3.0.0.jar
2、本節僅僅是簡介JDBC操作,臨時不考慮效率問題。
3、封裝的工具類代碼例如以下:
public class MongoDBProxy { private static MongoDBProxy proxy=null;//單實例 private static MongoDatabase db=null;//數據庫連接對象 private static String [] paramArray=new String[5];//數據庫連接參數 private MongoDBProxy(){ } static{ paramArray[0]="username"; paramArray[1]="password"; paramArray[2]="host"; paramArray[3]="port"; paramArray[4]="databaseName"; } /** * 得到MongoDBProxy * 採用系統默認配置 */ public static MongoDBProxy getMongoDBProxy(){ if(proxy==null){ proxy=new MongoDBProxy(); String sURI = String.format("mongodb://%s:%s@%s:%d/%s",paramArray[0],paramArray[1],paramArray[2],Integer.parseInt(paramArray[3]),paramArray[4]); MongoClientURI uri = new MongoClientURI(sURI); MongoClient mongoClient = new MongoClient(uri); db= mongoClient.getDatabase(paramArray[4]); } return proxy; } /** * 批量查詢數據 * @param table 集合名稱 * @param page 分頁參數 * @param filter 過濾條件 * @param sort 排序條件 */ public Page findDocList(String table,Page page,Bson filter,Bson sort){ MongoCollection<Document> coll=db.getCollection(table); long count=coll.count(filter);//依據過濾條件獲取數據總量 Page p=PageUtil.createPage(page,Integer.parseInt(String.valueOf(count))); p.setFromUrl((page.getFromUrl()==null)?"":page.getFromUrl()); p.setParamString((page.getParamString()==null)?"":page.getParamString()); FindIterable<Document> resultIterable=coll.find(); //運行條件過濾 resultIterable=resultIterable.sort(sort).filter(filter).skip(p.getBeginIndex()).batchSize(p.getEveryPage()); MongoCursor<Document> cousor=resultIterable.iterator(); List<Document> dataList=new ArrayList<Document>(); while(cousor.hasNext()){ dataList.add(cousor.next()); } p.setDataList(dataList); return PageUtil.buildPageString(p); } /** * 獲取單個文檔 * @param table 集合名稱 * @param filter 過濾條件 * @param sort 排序條件 */ public Document findOneDoc(String table,Bson filter,Bson sort){ MongoCollection<Document> coll=db.getCollection(table); FindIterable<Document> resultIterable=coll.find(); if(sort!=null){ resultIterable.sort(sort); } if(filter!=null){ resultIterable.filter(filter); } return resultIterable.first(); } /** * 加入文檔 * @param table 集合名稱 * @prama doc 文檔內容 */ public void addDocument(String table,Document doc){ MongoCollection<Document> coll=getCollection(table); coll.insertOne(doc); } /** * 批量加入文檔 * @param table 集合名稱 * @prama docList 文檔集合 */ public void addDocumentList(String table,List<Document> docList){ MongoCollection<Document> coll=getCollection(table); coll.insertMany(docList); } /** * 更新文檔 * @param table 集合名稱 * @param query 查詢條件 * @param up 更新數據 */ public UpdateResult updateDocument(String table,Bson query,Bson up){ MongoCollection<Document> coll=getCollection(table); return coll.updateOne(query,up); } /** * 替換文檔 * @param table 集合名稱 * @param query 查詢條件 * @param up 替換的文件對象 */ public UpdateResult replaceDocument(String table,Bson query,Document up){ MongoCollection<Document> coll=getCollection(table); return coll.replaceOne(query, up); } /** * 刪除文檔 * @param table 集合名稱 * @param delete 刪除條件 */ public DeleteResult deleteDocument(String table,Bson delete){ MongoCollection<Document> coll=getCollection(table); return coll.deleteOne(delete); } /** * 獲取集合對象 * @param table 集合名稱 */ private MongoCollection<Document> getCollection(String table){ return db.getCollection(table); } }
4、調用demo
MongoDBProxy proxy=MongoDBProxy.getMongoDBProxy(); System.out.println(proxy.findOneDoc("users",null,null).get("_id")); Document doc=new Document(); doc.put("user","李四"); proxy.addDocument("users", doc); Bson bson=new BasicDBObject("user","張三"); proxy.deleteDocument("users", bson);
興許再深入學習,先用demo上上手哇。哈哈。
MongoDB初探系列之四:MongoDB與Java共舞