MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So verwenden Sie eine neue URL von Mongodb 3.6, um eine Verbindung von Golang herzustellen

Ich konnte nur sehen, dass der Code gestartet wurde, dann nichts

Wie Sie herausgefunden haben, liegt dies daran, dass DialInfo standardmäßig ein Null-Timeout hat. Der Anruf wird für immer blockiert und wartet darauf, dass eine Verbindung hergestellt wird. Sie können auch ein Timeout angeben mit:

dialInfo.Timeout = time.Duration(30)
session, err := mgo.DialWithInfo(dialInfo)

Jetzt erhalte ich keine erreichbaren Server

Dies liegt daran, dass globalsign/mgo derzeit noch keine SRV-Verbindungszeichenfolgen-URI unterstützt. Siehe Probleme 112. Sie können das Nicht-srv-Verbindungs-URI-Format (MongoDB v3.4) verwenden, siehe verwandte Frage StackOverflow:41173720.

Sie können stattdessen mongo-go-driver verwenden, wenn Sie eine Verbindung über den SRV-Verbindungs-URI herstellen möchten, zum Beispiel:

mongoURI := "mongodb+srv://admin:[email protected]/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")

Das obige Beispiel ist kompatibel mit der aktuellen Version v1.0.0