主要問題是:MongoDB集群分為復制集(replicaSet)與分片集(shardingSet),那么如何去連接這兩種集群;
參考官方文檔,我使用了最通用的方法:通過構造connection string來通用連接兩種集群;
兩種集群connection string的構造方法:replicaSet中選取primary節點與secondary節點,排除arbiter節點;shardingSet中選取mongos節點;
Mongo的connection string夠着方法:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
MongoClient連接池連接方法:
String uriString = getURIString(primary); MongoClient mongoClient = new MongoClient(new MongoClientURI(uriString));
//根據MongoClient獲取該集群下的Database Name MongoIterable<String> allDatabases = mongoClient.listDatabaseNames();
集群連接的官方文檔參考:https://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/connect-to-mongodb/
connection string URI format:https://docs.mongodb.com/manual/reference/connection-string/