sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo conectarse correctamente al clúster Atlas M0 (nivel gratuito) a través del controlador Java?

¡Resuelto! Entonces, lo que he hecho:

  1. Solo intenté conectarme al clúster de niveles a través de driver3.6 y escribió

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

Siempre recibo un error: Connection strings must start with 'mongodb://' .

  1. Bien, eliminé el fragmento +srv y escribió de la misma manera

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

y vuelve a aparecer el error:

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

Entonces, escribí a través de driver3.4 o anterior Me gusta

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

y finalmente se resolvió.

Nota:Puede obtener esta cadena de conexión desde la consola de administración de Atlas configurando su controlador Java en '3.4 o posterior'. Esto le ayudará a evitar tener que inventar la cadena de conexión usted mismo.

Actualizado: si desea utilizar controladores 3.7+ , debe escribir en lugar de formatear la conexión (y para evitar mis problemas anteriores)

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

otra variante usando MongoClients.create() (a partir de la versión 3.7), y como se menciona aquí:

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

Nota: la contraseña debe escribirse no como mongodb://user:<mypassword>@... ,

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

sin llaves <> .