sql >> Database >  >> NoSQL >> MongoDB

Hoe correct verbinding maken met Atlas M0 (Free Tier) cluster via Java-stuurprogramma?

Opgelost! Dus, wat ik heb gedaan:

  1. Ik heb alleen geprobeerd verbinding te maken met het tiercluster via driver3.6 en schreef

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

Ik krijg altijd een foutmelding: Connection strings must start with 'mongodb://' .

  1. Oké, ik heb het fragment +srv verwijderd en schreef op dezelfde manier

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

en krijg opnieuw de fout:

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

Dus schreef ik via driver3.4 of eerder leuk vinden

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

en uiteindelijk is het opgelost.

Opmerking:u kunt deze verbindingsreeks ophalen van de Atlas-beheerconsole door uw Java-stuurprogramma in te stellen op '3.4 of hoger'. Zo voorkom je dat je zelf de verbindingsreeks moet bedenken.

Bijgewerkt: als u stuurprogramma's 3.7+ . wilt gebruiken , je moet schrijven in plaats van de verbinding te formatteren (en om mijn bovenstaande problemen te voorkomen)

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

een andere variant met behulp van MongoClients.create() (vanaf release 3.7), en zoals hier vermeld:

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

Opmerking: het wachtwoord moet niet schrijven zoals mongodb://user:<mypassword>@... ,

alleen in formaat mongodb://user:[email protected]

zonder accolades <> .



  1. Hoe Spring te gebruiken om verbinding te maken met MongoDB waarvoor authenticatie vereist is?

  2. Hoe het Datumveld op te slaan als ISODate() met Jackson in MongoDb

  3. MongoDB/Mongoose opvragen op een specifieke datum?

  4. Hoe redis bijwerken na het bijwerken van de database?