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