mgo を使用して Go から MongoDB Atlas に接続しようとした以前の試みで、次の問題が発生しました。 DialInfo のタイムアウトとサーバーの到達可能性。これらの問題を調査し、解決策を提供してみましょう。
デフォルトの DialInfo にはゼロ タイムアウトがあり、接続確立プロセスが無期限にブロックされます。これを解決するには、以下を使用してタイムアウトを明示的に設定できます。
dialInfo.Timeout = time.Duration(30) session, err := mgo.DialWithInfo(dialInfo)
到達不能サーバーに関する懸念は、mgo が SRV 接続文字列 URI 形式 (MongoDB v3) をサポートしていないことに起因しています。 .4)。この制限に対処するには、非 Srv 接続 URI 形式を使用できます。
mongoURI = "mongodb+srv://admin:password@my-atlas-cluster-01.mongodb.net:27017/dbname?ssl=true&retryWrites=true"
接続 URI で SRV を使用したい場合は、モンゴ・ゴー・ドライバー。以下に例を示します。
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")
このコードは、mongo-go-driver の現在のバージョン (v1.0.0) と互換性があることに注意してください。
以上がGo から MongoDB Atlas に接続する方法: タイムアウトとサーバー到達可能性の問題を解決するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。