Selesai! Jadi, apa yang telah saya lakukan:
-
Saya hanya mencoba menghubungkan ke tier cluster melalui driver3.6 dan menulis
mongodb+srv://user:@cluster0-ox90k.mongodb.net/test?retryWrites=true
Saya selalu mendapatkan kesalahan: Connection strings must start with 'mongodb://'
.
-
Oke, saya menghapus cuplikan
+srv
dan menulis dengan cara yang samamongodb://user:@cluster0-ox90k.mongodb.net/test?retryWrites=true
dan dapatkan lagi kesalahannya:
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}}]
Jadi, saya menulis melalui driver3.4 atau sebelumnya seperti
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
dan akhirnya terpecahkan.
Catatan:Anda bisa mendapatkan string koneksi ini dari konsol manajemen Atlas dengan menyetel driver Java Anda ke '3.4 atau lebih baru'. Ini akan membantu Anda menghindari keharusan membuat sendiri string koneksi.
Diperbarui: jika Anda ingin menggunakan driver 3.7+
, Anda perlu menulis alih-alih memformat koneksi (dan untuk menghindari masalah saya di atas)
MongoClientURI uri = new MongoClientURI("mongodb+srv://admin:[email protected]/test?retryWrites=true");
MongoClient mongoClient = new MongoClient(uri);
varian lain menggunakan MongoClients.create()
(per rilis 3.7), dan seperti yang disebutkan di sini:
MongoClient mongoClient = MongoClients.create("mongodb+srv://admin:[email protected]/test?retryWrites=true");
Catatan: kata sandi harus ditulis tidak seperti mongodb://user:<mypassword>@...
,
hanya dalam format mongodb://user:[email protected]
tanpa kawat gigi <>
.