sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo usar una nueva URL de mongodb 3.6 para conectarse desde golang

Solo pude ver que el código comenzó, luego nada

Como ha descubierto, esto se debe a que DialInfo tiene un tiempo de espera de cero de forma predeterminada. La llamada se bloqueará para siempre esperando que se establezca una conexión. También puede especificar un tiempo de espera con:

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

Ahora no obtengo servidores accesibles

Esto se debe a que globalsign/mgo aún no es compatible con el URI de la cadena de conexión SRV. Consulte los problemas 112. Puede usar el formato de URI de conexión no srv (MongoDB v3.4), consulte una pregunta relacionada StackOverflow:41173720.

Puede usar mongo-go-driver en su lugar si desea conectarse usando el URI de conexión SRV, por ejemplo:

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

El ejemplo anterior es compatible con la versión actual v1.0.0