使用 Golang 驱动程序通过新 URL 语法连接到 MongoDB Atlas
使用 Golang 驱动程序连接到 MongoDB Atlas 时,可能会由于以下原因出现问题使用 MongoDB 3.6 中引入的新 URL 语法。本文探讨了潜在的陷阱并提供了解决方案。
错误:未连接
代码尝试使用 tls.Dial("tcp" 建立连接、addr.String()、tlsConfig) 函数。但是,它没有指定超时,这可能会导致代码无限期阻塞。要解决此问题,请使用 dialInfo.Timeout = time.Duration(30).
Error: No Reachable Servers
使用 mgo.DialWithInfo 函数时显式设置超时使用 SCRAM 机制,可能会出现错误,指示未找到可访问的服务器。这是因为 globalsign/mgo 驱动程序当前不支持 SRV 连接字符串 URI。或者,使用非 SRV 连接 URI 格式 (MongoDB v3.4) 或考虑使用 mongo-go-driver,它支持 SRV 连接 URI。
使用 Mongo-go 的示例代码-driver
要演示使用 mongo-go-driver 与 SRV 连接 URI 进行连接,请考虑以下代码snippet:
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) }
此示例与当前版本的 mongo-go-driver v1.0.0 兼容。
以上是如何使用具有新 URL 语法的 Golang 驱动程序成功连接到 MongoDB Atlas?的详细内容。更多信息请关注PHP中文网其他相关文章!