mongodb - 无法将mongodb与GoLang连接

标签 mongodb go

我无法将mongodb与golang连接。

telnet mongoHost 27017很好

ping mongoHost它很不错

MongoHost是我的 private 主机,不是docker

Mongodb版本:2.4.3

MongoDriver:1.3.2

Go版本:go版本go1.14.1 darwin / amd64

作业系统:Mac

这是我的连接代码

clientOptions := &options.ClientOptions{}
clientOptions.SetServerSelectionTimeout(4 * time.Second)
clientOptions.SetDirect(true)
clientOptions.SetAppName("tests")
clientOptions.SetHosts([]string{"mongoHost:27017"})
clientOptions.SetReadPreference(readpref.Secondary())
client, err := mongo.NewClient(clientOptions)
if err != nil {
    log.Fatal(err)
}
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
err = client.Connect(ctx)
if err != nil {
    log.Fatal(err)
}

我更改了超时,但每次收到此错误时它都没有更改连接:

2020/04/12 14:06:19服务器选择错误:服务器选择超时,当前拓扑:{类型:未知,服务器:[{地址:mongoHost:27017,类型:独立,状态:已连接,平均RTT:13849652}, ]}

最佳答案

您设置的客户端设置是矛盾的。您正在建立与单个副本集成员的直接连接,或者与具有优先读取优先级的副本集建立连接。我建议将其更改为简单的内容:

client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://mongoHost:27017/?replicaSet=FOOBAR"))

另请参见mongo-driver: Connect以查看有关如何连接的各种代码示例。

Mongodb版本:2.4.3

请升级您的MongoDB服务器版本。 MongoDB Go驱动程序版本的最不兼容版本是MongoDB服务器版本2.6。有关更多信息,请参见MongoDB Compatibility chart

MongoDB v2.4于2013年(7年前)发布,当前版本为4.2。我强烈建议您升级,请参阅Upgrade MongoDB to v2.6,然后进行升级,直到满足您要求的最新版本为止。

关于mongodb - 无法将mongodb与GoLang连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61170582/

相关文章:

angularjs - 使用 AngularJS 和 NodeJS、MongoDB 进行动态 URL 查询

go - 按名称调用接线员

go - 如何修复 VS Code 错误 : "Not able to determine import path of current package by using cwd" for Go project

go - 从函数中获取响应而不返回 - Golang

reflection - 使用反射包比较指针值

mongodb - 无法从 GCP App Engine 连接到 Mongo Atlas

javascript - 如何检查文本输入是否在 ReactJS 中具有有效的电子邮件格式?

django - 服务器滞后 - Django + mongodb + cronjob

mongodb - 如何从 MongoDB shell 连接到副本集?

Go 应用程序(在 Docker 容器中)没有反射(reflect)页面上的更改?