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

Sådan bruger du ny URL fra mongodb 3.6 til at oprette forbindelse fra golang

Jeg kunne kun se, at koden startede, så intet

Som du har regnet ud, skyldes det, at DialInfo som standard har nul timeout. Opkaldet blokeres for evigt og venter på, at der oprettes forbindelse. Du kan også angive en timeout med:

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

Nu får jeg ingen tilgængelige servere

Dette skyldes, at globalsign/mgo endnu ikke understøtter SRV-forbindelsesstreng-URI. Se problemer 112. Du kan bruge URI-formatet uden srv-forbindelse (MongoDB v3.4), se et relateret spørgsmål StackOverflow:41173720.

Du kan bruge mongo-go-driver i stedet, hvis du gerne vil oprette forbindelse ved hjælp af SRV-forbindelsens URI, for eksempel:

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

Ovenstående eksempel er kompatibelt med den aktuelle version v1.0.0




  1. Redis benchmarking for hget- og hset-kommandoer

  2. Forsøger at løse afhængigheder:Ændring af .NET Standard Library til NET Core - Microsoft.Extensions.Primitives

  3. Opret en note-app til Android med MongoDB Stitch

  4. docker-compose:Redis forbindelse nægtet mellem containere