MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come utilizzare il nuovo URL da mongodb 3.6 per connettersi da Golang

Ho potuto vedere solo che il codice è iniziato, quindi niente

Come hai capito, ciò è dovuto al fatto che DialInfo per impostazione predefinita ha un timeout zero. La chiamata si bloccherà per sempre in attesa che venga stabilita una connessione. Puoi anche specificare un timeout con:

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

Ora non ricevo server raggiungibili

Questo perché globalsign/mgo non supporta ancora l'URI della stringa di connessione SRV. Vedere i problemi 112. È possibile utilizzare il formato URI di connessione non srv (MongoDB v3.4), vedere una domanda correlata StackOverflow:41173720.

Puoi invece utilizzare mongo-go-driver se desideri connetterti utilizzando l'URI di connessione SRV, ad esempio:

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")

L'esempio sopra è compatibile con la versione corrente v1.0.0