为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 mongo 连接字符串中的“connect”选项没有记录?

为什么 mongo 连接字符串中的“connect”选项没有记录?

Go
天涯尽头无女友 2023-08-21 14:33:35
问题是,即使我只针对连接字符串中副本集的一个节点,mongo-go-driver也总是希望发现并连接其他节点。基本上说我应该connect在连接字符串中添加选项。mongodb://host:27017/authDb?connect=direct我的问题是:这个做法有多好或多坏?为什么 mongo 没有记录,这个选项还有其他可用的值吗?
查看完整描述

2 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

该选项仅适用于 Go 驱动程序。对于所有其他驱动程序,它无法识别,因此它没有记录为常规连接字符串选项。

查看完整回答
反对 回复 2023-08-21
?
Helenr

TA贡献1780条经验 获得超3个赞

这个做法有多好或多坏?为什么 mongo 没有记录,这个选项还有其他可用的值吗?

正如已接受的答案中所指出的,这记录在驱动程序文档中。现在讨论问题的另一部分。

一般来说,在副本集上下文中,您可能希望连接到拓扑,而不是直接连接到特定的副本集成员,但出于管理目的除外。复制旨在提供冗余,并且在发生故障转移时不建议直接连接到一个成员(即主成员)。

直接连接:客户端必须能够连接到任何类型的单个服务器。这包括查询隐藏的副本集成员,以及连接到未初始化的成员(请参阅 RSGhost)以运行“replSetInitiate”。连接到辅助设备不一定需要设置读取首选项。当然,辅助设备将拒绝使用 PRIMARY 读取首选项完成的所有操作,因为未设置 SlaveOk 位,但初始连接本身会成功。驱动程序可以允许直接连接到仲裁器(例如,运行管理命令)。

它只指定它必须能够这样做,但没有指定如何这样做。MongoDB Go驱动程序并不是目前唯一支持direct选项方法的驱动程序,还有.NET/C#和Ruby。

目前有一个开放的 PR规范来统一行为。未来,所有驾驶员都将采用相同的方式建立直接连接。


查看完整回答
反对 回复 2023-08-21
  • 2 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信