Bei Ihren vorherigen Versuchen, eine Verbindung zu MongoDB Atlas von Go aus mithilfe von mgo herzustellen, sind Probleme mit aufgetreten das DialInfo-Timeout und die Servererreichbarkeit. Lassen Sie uns diese Probleme untersuchen und Lösungen bereitstellen:
Die Standard-DialInfo hat ein Null-Timeout, was dazu führt, dass der Verbindungsaufbauprozess auf unbestimmte Zeit blockiert wird. Um dieses Problem zu beheben, können Sie explizit eine Zeitüberschreitung festlegen, indem Sie Folgendes verwenden:
dialInfo.Timeout = time.Duration(30) session, err := mgo.DialWithInfo(dialInfo)
Ihre Besorgnis über nicht erreichbare Server rührt von der mangelnden Unterstützung von mgo für das SRV-Verbindungszeichenfolgen-URI-Format (MongoDB v3 .4). Um diese Einschränkung zu beheben, können Sie das Nicht-Srv-Verbindungs-URI-Format verwenden:
mongoURI = "mongodb+srv://admin:password@my-atlas-cluster-01.mongodb.net:27017/dbname?ssl=true&retryWrites=true"
Wenn Sie SRV lieber in Ihrem Verbindungs-URI verwenden möchten, sollten Sie die Verwendung von in Betracht ziehen Mongo-Go-Fahrer. Hier ist ein Beispiel:
mongoURI := "mongodb+srv://admin:password@my-atlas-cluster-01.mongodb.net/dbname?ssl=true&retryWrites=true" client, err := mongo.NewClient(options.Client().ApplyURI(mongoURI)) if err != nil { log.Fatal(err) } ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) defer cancel() err = client.Connect(ctx) defer client.Disconnect(ctx) if err != nil { log.Fatal(err) } database := client.Database("go") collection := database.Collection("atlas")
Beachten Sie, dass dieser Code mit der aktuellen Version von mongo-go-driver (v1.0.0) kompatibel ist.
Das obige ist der detaillierte Inhalt vonWie kann ich von unterwegs aus eine Verbindung zu MongoDB Atlas herstellen: Timeout- und Server-Erreichbarkeitsprobleme lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!