sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur ansluter man till Atlas M0 (Free Tier)-kluster korrekt via Java-drivrutin?

Löste det! Så, vad jag har gjort:

  1. Jag försökte bara ansluta till nivåkluster via driver3.6 och skrev

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

Jag får alltid ett felmeddelande: Connection strings must start with 'mongodb://' .

  1. Okej, jag tog bort kodavsnittet +srv och skrev på samma sätt

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

och få felet igen:

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

Så jag skrev via driver3.4 eller tidigare gillar

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

och till slut löste det sig.

Obs:Du kan hämta den här anslutningssträngen från Atlas-hanteringskonsolen genom att ställa in din Java-drivrutin till '3.4 eller senare'. Detta hjälper dig att undvika att själv komma på anslutningssträngen.

Uppdaterad: om du vill använda drivrutiner 3.7+ , måste du skriva istället för att formatera anslutning (och för att undvika mina problem ovan)

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

en annan variant som använder MongoClients.create() (från och med version 3.7), och som nämnts här:

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

Obs! lösenordet måste skrivas inte som mongodb://user:<mypassword>@... ,

bara i formatet mongodb://user:[email protected]

utan hängslen <> .



  1. Få bara ett specificerat fält i MongoDB med C#

  2. Bulk intag i Redis

  3. Uppdatera fält i exakt elementarray i MongoDB

  4. MongoDB $sortByCount Aggregationsoperatör