首页 > 后端开发 > Golang > 如何使用具有新 URL 语法的 Golang 驱动程序成功连接到 MongoDB Atlas?

如何使用具有新 URL 语法的 Golang 驱动程序成功连接到 MongoDB Atlas?

Mary-Kate Olsen
发布: 2024-12-26 19:28:14
原创
876 人浏览过

How to Successfully Connect to MongoDB Atlas using Golang Drivers with the New URL Syntax?

使用 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板