您可以使用下列格式中的一种来指定 MongoDB 连接字符串:
除非连接到在线存档,否则MongoDB Atlas集群使用 SRV 连接格式。
如要直接连接到连接字符串中指定的主机和端口,请将 directConnection
选项设置为 true
。有关 directConnection
和其他连接字符串选项的详细信息,请参阅连接字符串选项。
SRV 连接格式。
MongoDB 支持 DNS 构建的种子列表。通过使用 DNS 构建可用服务器列表,可以提高部署的灵活性,并能够轮流更改服务器,而无需重新配置客户端。
SRV URI 连接模式具有以下形式:
mongodb+srv://[username:password@]host[/[defaultauthdb][?options]]
有关更多示例,请参阅以下页面:
连接字符串组件
连接字符串包括以下组件:
组件 | 说明 | |
---|---|---|
| 标识标准连接格式 ( | |
| 可选。身份验证凭证。 如果指定,客户端将尝试向 如果用户名或密码包含以下字符,则必须使用百分号编码:对这些字符进行转换。
另请参阅 | |
| ||
| 可选。 如果连接string包含 如果 重要提示:对于使用SRV 连接格式的Atlas部署, | |
| 可选。 将连接特定选项指定为 如果连接字符串未指定数据库/,则必须在最后一个 |
要使用 DNS种子列表,请使用与带有 mongodb+srv
前缀的标准连接字符串相同的语法,而不是标准mongodb
。+srv
向客户端指示后面的主机名对应于 DNS SRV记录。驾驶员或 mongosh
查询 DNS 的记录,以确定哪些主机正在运行mongod
或 mongos
实例。
使用 +srv
格式时,必须以 <hostname>.<domain>.<TLD>.
格式指定 hostname
、domain
和 top-level domain (TLD)
。这个表格显示占位符与示例值的对应关系:
占位符 | 例子 |
---|---|
|
|
|
|
|
|
|
|
此示例显示了正确使用 <hostname>.<domain>.<TLD>
格式的 DNS 种子列表连接字符串。它使用密码D1fficultP%40ssw0rd
作为用户myDatabaseUser
进行身份验证:
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@server.example.com/
相应的 DNS 配置类似于:
Record TTL Class Priority Weight Port Target _mongodb._tcp.server.example.com. 86400 IN SRV 0 5 27317 mongodb1.example.com. _mongodb._tcp.server.example.com. 86400 IN SRV 0 5 27017 mongodb2.example.com.
各个 SRV 记录必须采用 _mongodb._tcp.<hostname>.<domain>.<TLD>
格式。
当客户端连接到种子列表的节点时,客户端会检索它可以连接到的副本集列表。客户端经常在其种子列表中使用 DNS 别名,这意味着托管可能会返回与原始种子列表不同的服务器列表。如果发生这种情况,客户端将使用副本集提供的主机名,而不是种子列表中列出的主机名,以确保可以通过生成的副本集副本集节点。
重要
SRV 记录中返回的主机名必须与给定主机名股票相同的父域(在本示例中为 example.com
)。如果父域和主机名不匹配,则无法连接。
与标准连接字符串一样,DNS 种子列表连接字符串支持将选项指定为查询字符串。使用 DNS 种子列表连接字符串,还可以通过 TXT 记录指定以下选项:
replicaSet
authSource
每个mongod
实例只能指定一个 TXT记录。如果 DNS 中出现多条 TXT 记录,或者 TXT记录包含 replicaSet
或 authSource
以外的选项,客户端将返回错误。
server.example.com
DNS 条目的 TXT记录类似于以下示例:
Record TTL Class Text server.example.com. 86400 IN TXT "replicaSet=mySet&authSource=authDB"
将DNS SRV 记录和 TXT 记录中指定的选项结合起来,可解析为以下标准格式的连接字符串:
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb1.example.com:27317,mongodb2.example.com:27017/?replicaSet=mySet&authSource=authDB
要覆盖 TXT记录中指定的选项,请在查询字符串中指定该选项。 示例,以下查询字符串会覆盖上一个 DNS 条目的 TXT记录中配置的 authSource
选项。
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@server.example.com/?connectTimeoutMS=300000&authSource=aDifferentAuthDB
给定 authSource
的覆盖项,标准格式的等效连接字符串将类似于以下示例:
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb1.example.com:27317,mongodb2.example.com:27017/?connectTimeoutMS=300000&replicaSet=mySet&authSource=aDifferentAuthDB
标准连接字符串格式
本节介绍了用于连接到自托管 MongoDB 独立部署、副本集或分片集群的 MongoDB 连接 URI 的标准格式。
标准 URI 连接方案的形式如下:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
连接字符串数据库选项
您可以在连接字符串的 [/defaultauthdb]
字段中指定默认数据库。 客户端使用指定的 [/defaultauthdb]
数据库作为默认数据库。如果连接字符串未指定, MongoDB将使用 test
数据库作为默认数据库。
您可以使用 authSource
连接选项在连接字符串中指定身份验证数据库。如果指定,客户端将使用此数据库来验证用户身份和凭证。如果未指定authSource
,则默认为[/defaultauthdb]
数据库。如果 authSource
和 [/defaultauthdb]
均未指定,则 authSource
默认为 admin
数据库。
以下示例连接字符串将默认数据库设置为 myDefaultDB
,并将身份验证数据库设置为 admin
:
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/myDefaultDB?authSource=admin
连接字符串组件
连接字符串包括以下组件:
组件 | 说明 | |
---|---|---|
| 标识标准连接格式 ( | |
| 可选。身份验证凭证。 如果指定,客户端将尝试向 如果用户名或密码包含以下字符,则必须使用百分号编码:对这些字符进行转换:
另请参阅 | |
| ||
| 可选。 如果连接string包含 如果 重要提示:对于使用SRV 连接格式的Atlas部署, | |
| 可选。 将连接特定选项指定为 如果连接字符串未指定数据库/,则必须在最后一个 |