MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como usar o novo URL do mongodb 3.6 para se conectar do golang


Eu só podia ver que o código começou, então nada

Como você descobriu, isso ocorre porque o DialInfo, por padrão, tem um tempo limite zero. A chamada será bloqueada para sempre aguardando o estabelecimento de uma conexão. Você também pode especificar um tempo limite com:
dialInfo.Timeout = time.Duration(30)
session, err := mgo.DialWithInfo(dialInfo)

Agora não estou recebendo servidores alcançáveis

Isso ocorre porque globalsign/mgo ainda não suporta URI de cadeia de conexão SRV. Consulte os problemas 112. Você pode usar o formato URI de conexão não srv (MongoDB v3.4), consulte uma pergunta relacionada StackOverflow:41173720.

Você pode usar o mongo-go-driver se quiser se conectar usando o URI de conexão SRV, por exemplo:
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")

O exemplo acima é compatível com a versão atual v1.0.0