MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come connettersi correttamente al cluster Atlas M0 (piano gratuito) tramite il driver Java?

Risolto!Quindi, cosa ho fatto:

  1. Ho provato solo a connettermi al cluster di livello tramite driver3.6 e ha scritto

    mongodb+srv://user:@cluster0-ox90k.mongodb.net/test?retryWrites=true

Ricevo sempre un errore: Connection strings must start with 'mongodb://' .

  1. Ok, ho eliminato lo snippet +srv e ho scritto allo stesso modo

    mongodb://user:@cluster0-ox90k.mongodb.net/test?retryWrites=true

e ottieni di nuovo l'errore:

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}}]

Quindi, ho scritto tramite driver3.4 o precedente come

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

e alla fine è stato risolto.

Nota:puoi ottenere questa stringa di connessione dalla console di gestione Atlas impostando il tuo driver Java su "3.4 o successivo". Questo ti aiuterà a evitare di dover inventare tu stesso la stringa di connessione.

Aggiornato: se vuoi usare i driver 3.7+ , devi scrivere invece di formattare la connessione (e per evitare i miei problemi sopra)

MongoClientURI uri = new MongoClientURI("mongodb+srv://admin:[email protected]/test?retryWrites=true");
MongoClient mongoClient = new MongoClient(uri);

un'altra variante usando MongoClients.create() (a partire dalla versione 3.7) e come menzionato qui:

   MongoClient mongoClient = MongoClients.create("mongodb+srv://admin:[email protected]/test?retryWrites=true");

Nota: la password deve essere scritta in modo diverso da mongodb://user:<mypassword>@... ,

solo nel formato mongodb://user:[email protected]

senza parentesi <> .