Lors de vos précédentes tentatives de connexion à MongoDB Atlas depuis Go à l'aide de mgo, vous avez rencontré des problèmes avec le délai d'expiration de DialInfo et l'accessibilité du serveur. Explorons ces problèmes et proposons des solutions :
Le DialInfo par défaut a un délai d'attente nul, ce qui entraîne le blocage indéfini du processus d'établissement de la connexion. Pour résoudre ce problème, vous pouvez définir explicitement un délai d'attente en utilisant :
dialInfo.Timeout = time.Duration(30) session, err := mgo.DialWithInfo(dialInfo)
Votre préoccupation concernant les serveurs inaccessibles provient du manque de prise en charge par mgo du format URI de la chaîne de connexion SRV (MongoDB v3 .4). Pour résoudre cette limitation, vous pouvez utiliser le format d'URI de connexion non-srv :
mongoURI = "mongodb+srv://admin:password@my-atlas-cluster-01.mongodb.net:27017/dbname?ssl=true&retryWrites=true"
Si vous préférez utiliser SRV dans votre URI de connexion, envisagez d'utiliser le mongo-go-driver. Voici un exemple :
mongoURI := "mongodb+srv://admin:password@my-atlas-cluster-01.mongodb.net/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")
Notez que ce code est compatible avec la version actuelle de mongo-go-driver (v1.0.0).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!