MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment se connecter correctement au cluster Atlas M0 (niveau gratuit) via le pilote Java ?

Résolu ! Alors, ce que j'ai fait :

  1. J'ai essayé uniquement de me connecter au cluster de niveau via driver3.6 et écrit

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

J'obtiens toujours une erreur : Connection strings must start with 'mongodb://' .

  1. OK, j'ai supprimé l'extrait +srv et écrit de la même manière

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

et obtenez à nouveau l'erreur :

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

Donc, j'ai écrit via driver3.4 ou antérieur j'aime

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

et finalement c'est résolu.

Remarque :Vous pouvez obtenir cette chaîne de connexion à partir de la console de gestion Atlas en définissant votre pilote Java sur "3.4 ou version ultérieure". Cela vous évitera d'avoir à créer vous-même la chaîne de connexion.

Mise à jour : si vous souhaitez utiliser les pilotes 3.7+ , vous devez écrire au lieu de formater la connexion (et pour éviter mes problèmes ci-dessus)

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

une autre variante utilisant MongoClients.create() (à partir de la version 3.7), et comme mentionné ici :

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

Remarque : le mot de passe doit écrire pas comme mongodb://user:<mypassword>@... ,

juste au format mongodb://user:[email protected]

sans accolades <> .