MongoDB 實戰筆記 四
阿新 • • 發佈:2019-01-26
import java.net.UnknownHostException; import com.mongodb.DB; import com.mongodb.Mongo; import com.mongodb.MongoException; public class DBTool { private DBTool(){} private static Mongo w ; //寫 private static Mongo r; //讀 static{ if (null == w) { synchronized (DBTool.class) { try { w = new Mongo(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MongoException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } if (null == r) { synchronized (DBTool.class) { try { r = new Mongo("10.166.112.245"); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MongoException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public static Mongo getWriteDb() {//獲取寫 if (null == w) { synchronized (w) { try { w = new Mongo(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MongoException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return w; } public static Mongo getReadDB(){//獲取讀 if (null == r) { synchronized (r) { try { r = new Mongo("10.16.112.245"); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MongoException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return r; } public static void colse(){//關閉資料庫 if (null != w) { w.close(); } if (null != r) { r.close(); } } }
import java.util.Iterator; import org.json.simple.JSONObject; import org.json.simple.JSONValue; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.Mongo; public class DBToolOper { private Mongo m = null; private DB d = null; private DBCollection c = null; public DBToolOper(String type,String dbName) {//根據傳入的型別,開啟讀寫 if ("w".equals(type)) { m = DBTool.getWriteDb(); } else { m = DBTool.getReadDB(); } d = m.getDB(dbName); } /** * json {x:1,y:{d:0}} */ public void writeJson(String json){//把轉入的字串json 轉換成json物件 JSONObject jo = (JSONObject)JSONValue.parse(json); Iterator iter = jo.keySet().iterator(); BasicDBObject doc = new BasicDBObject(); while (iter.hasNext()) { String key = iter.next().toString(); //System.out.println("[key="+key+", val="+jo.get(key)+"]"); doc.put(key, jo.get(key)); } if (!doc.isEmpty()) { c.insert(doc); } } public long getCount(){//獲取總數 return c.getCount(); } public void setDabase(String dbName) {//設定要訪問的DB d = m.getDB(dbName); } public void setTable(String tbName){//設定要訪問的集合 c = d.getCollection(tbName); } public void printLimit(int row){//獲取前row條資料 DBCursor curr = c.find().limit(row); while(curr.hasNext()) System.out.println(curr.next()); } public void printAll(){//列印所有資料 DBCursor curr = c.find(); while(curr.hasNext()) System.out.println(curr.next()); } public void close(){//關閉資料庫 if (null != m) { m.close(); } } }
測試程式
主從資料庫 實現讀寫分離
Random rm = new Random(System.currentTimeMillis()); //讀寫分離資料庫 獲取寫資料庫 DB dw = DBTool.getDB("w"); DBCollection collr = dw.getCollection("c2"); BasicDBObject doc = new BasicDBObject(); doc.put("name"+rm.nextInt(999999999), "MongoDB"); collr.insert(doc); DB dr = DBTool.getDB("r"); collr = dr.getCollection("c2"); DBCursor curr = collr.find().limit(2000); while(curr.hasNext()) System.out.println(curr.next()); DBTool.colse();
登陸具有許可權的資料庫(使用者名稱,密碼)
Mongo m = new Mongo("10.16.112.245");
DB db = m.getDB("mybase");
//獲取系統許可權 登陸admin 再切換資料庫
boolean auth = db.authenticate("root", "888".toCharArray());
db = m.getDB("test");
Set<String> colls = db.getCollectionNames();
for (String string : colls) {
System.out.println(string);
}
DBCollection coll = db.getCollection("c2");
System.out.println(coll.count());
DBCursor cur = coll.find().limit(2);
while(cur.hasNext())
System.out.println(cur.next());
m.close();
二次封裝 ,更方便的操作
DBToolOper dbOper = new DBToolOper("w","mybase");
dbOper.setTable("c8");
for (int i = 0; i < 10; i++) {
dbOper.writeJson("{\"xx7\":"+i+",\"a\":[{\"b\":0,\"c\":2}]}");
}
System.out.println(dbOper.getCount());
dbOper.printLimit(50);
dbOper.close();
繼續的方向: 條件查詢