Đã giải quyết nó! Vì vậy, những gì tôi đã làm:
-
Tôi chỉ cố gắng kết nối với cụm tầng qua driver3.6 và đã viết
mongodb + srv:// user:@ cluster0-ox90k.mongodb.net / test? retryWrites =true
Tôi luôn gặp lỗi: Connection strings must start with 'mongodb://'
.
-
Được rồi, tôi đã xóa đoạn mã
+srv
và viết theo cùng một cáchmongodb:// user:@ cluster0-ox90k.mongodb.net / test? retryWrites =true
và gặp lại lỗi:
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}}]
Vì vậy, tôi đã viết qua driver3.4 hoặc phiên bản cũ hơn thích
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
và cuối cùng nó đã được giải quyết.
Lưu ý:Bạn có thể lấy chuỗi kết nối này từ bảng điều khiển quản lý Atlas bằng cách đặt trình điều khiển Java của bạn thành '3.4 trở lên'. Điều này sẽ giúp bạn tránh phải tự tìm ra chuỗi kết nối.
Đã cập nhật: nếu bạn muốn sử dụng trình điều khiển 3.7+
, bạn cần viết thay vì kết nối định dạng (và để tránh các vấn đề của tôi ở trên)
MongoClientURI uri = new MongoClientURI("mongodb+srv://admin:[email protected]/test?retryWrites=true");
MongoClient mongoClient = new MongoClient(uri);
một biến thể khác sử dụng MongoClients.create()
(kể từ bản phát hành 3.7) và như đã đề cập ở đây:
MongoClient mongoClient = MongoClients.create("mongodb+srv://admin:[email protected]/test?retryWrites=true");
Lưu ý: mật khẩu cần viết không giống mongodb://user:<mypassword>@...
,
chỉ ở định dạng mongodb://user:[email protected]
không có dấu ngoặc nhọn <>
.