㈠ Mongodb的java driver中的Mongo和MongoClient有什麼區別
Java代碼收藏代碼
//構造方法
//replicaSetSeeds所有Server的地址
//options默認的查詢設置
publicMongo(List<ServerAddress>replicaSetSeeds,MongoOptionsoptions)
throwsMongoException{
//設置類變數
_addr=null;
_addrs=replicaSetSeeds;
_options=options;
//應用查詢設置
_applyMongoOptions();
//創建TCP連接實例
_connector=newDBTCPConnector(this,_addrs);
//啟動數據清理線程
_cleaner=newDBCleanerThread();
_cleaner.start();
}
//應用查詢設置
void_applyMongoOptions(){
//是否在SlaveServer上執行查詢
if(_options.slaveOk)slaveOk();
//應用默認的寫入設置
setWriteConcern(_options.getWriteConcern());
}
//應用默認的寫入設置
publicvoidsetWriteConcern(WriteConcernconcern){
_concern=concern;
}
涉及的其他類:
ServerAddress用於保存主機名和所使用的埠的信息
MongoOptions用於保存查詢設置(是否在Slave上進行查詢,超時設置等)
WriteConcern寫入參數設置,包括:Server數量,寫入超時設置,是否立即將結果同步到文件系統中
DBTCPConnector表示TCP數據連接,後續文章中將詳細介紹。
DBCleanerThread清理線程,每隔一段時間清理各個DB的DBCursor
獲取所有資料庫的名稱
實現如下:
Java代碼收藏代碼
//獲取所有資料庫的名稱
publicList<String>getDatabaseNames()
throwsMongoException{
//創建表示資料庫命令的DBOBject
BasicDBObjectcmd=newBasicDBObject();
cmd.put("listDatabases",1);
//使用admin資料庫執行命令並返回結果
CommandResultres=getDB("admin").command(cmd,getOptions());
//有錯誤的情況下拋出異常
res.throwOnError();
//獲取結果中的databases屬性,即資料庫列表
Listl=(List)res.get("databases");
//遍歷databases,將名稱保存到一個list中,並返回結果
List<String>list=newArrayList<String>();
for(Objecto:l){
list.add(((BasicDBObject)o).getString("name"));
}
returnlist;
}
涉及的其他類:
BasicDBObject與MongoDB交互時使用的數據結構,實際相當於Java中的Map,或JavaScript中的object
CommandResult操作執行的結果,繼承BasicDBObject,提供一些便捷的方法,實際仍然是在DBObject中查詢相應的屬性。