解決しました!それで、私がしたこと:
-
driver3.6を介してティアクラスターに接続しようとしました と書いた
mongodb + srv:// user:@ cluster0-ox90k.mongodb.net / test?retryWrites =true
常にエラーが発生します: Connection strings must start with 'mongodb://'
。
-
さて、スニペット
+srv
を削除しました 同じように書いたmongodb:// user:@ cluster0-ox90k.mongodb.net / test?retryWrites =true
もう一度エラーが発生します:
com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=cluster0-ox90k.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: cluster0-ox90k.mongodb.net}, caused by {java.net.UnknownHostException: cluster0-ox90k.mongodb.net}}]
だから、私はdriver3.4以前を介して書いた のように
mongodb://user:<PASSWORD>@cluster0-shard-00-00-ox90k.mongodb.net:27017,cluster0-shard-00-01-ox90k.mongodb.net:27017,cluster0-shard-00-02-ox90k.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true
そしてついに解決しました。
注:この接続文字列は、Javaドライバーを「3.4以降」に設定することにより、Atlas管理コンソールから取得できます。これにより、接続文字列を自分で考え出す必要がなくなります。
更新: ドライバーを使用する場合3.7+
、フォーマット接続の代わりに書く必要があります(そして上記の私の問題を避けるために)
MongoClientURI uri = new MongoClientURI("mongodb+srv://admin:[email protected]/test?retryWrites=true");
MongoClient mongoClient = new MongoClient(uri);
MongoClients.create()
を使用する別のバリアント (3.7リリース以降)、およびここで説明されているように:
MongoClient mongoClient = MongoClients.create("mongodb+srv://admin:[email protected]/test?retryWrites=true");
注: パスワードはmongodb://user:<mypassword>@...
のように書く必要はありません 、
mongodb://user:[email protected]
の形式で
中かっこなし<>
。