Docs 菜单

连接字符串(Connection Strings)


➤ 使用右上角的 Select your language(选择语言)下拉菜单,设置以下示例的语言。


您可以使用连接字符串来定义 MongoDB 实例与以下目标之间的连接:

您可以使用连接字符串连接到以下环境中托管的部署:

完成如下步骤,找到您的连接字符串。

要使用 Atlas CLI 查找 MongoDB Atlas 连接字符串,请安装 Atlas CLI 并通过其进行连接,然后运行以下命令。将 <clusterName> 替换为 MongoDB Atlas 集群的名称,并将 <projectId> 替换为项目 ID。

atlas clusters connectionStrings describe <clusterName> --projectId <projectId>

要了解更多信息,请参阅 atlas 集群资源 connectionStrings 描述

要在 Atlas 用户界面中查找 MongoDB Atlas 连接字符串,请按照以下步骤操作:

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。

  3. 如果尚未出现,请单击侧边栏中的 Clusters(集群)。

    会显示集群页面。

2
  1. 单击要连接的集群所对应的 Connect

  2. 单击 Choose a Connection Method。MongoDB Atlas 默认选择Standard Connection。要使用私有端点进行连接,请选择 Private Endpoint

3

要连接到您的应用程序,请单击 Drivers。要使用工具进行连接,请单击要用来访问数据的工具。

4
  1. 如果您选择了 Drivers,请选择您的驱动程序和版本。如果您选择了工具,请下载相应工具。

  2. 选择 Connect To Cluster

  3. 复制连接字符串。将连接字符串中的 <password><username> 替换为数据库用户的凭证。

您的 MongoDB Atlas 连接字符串将类似于以下示例:

mongosh "mongodb+srv://cluster0.example.mongodb.net myFirstDatabase" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority

如果您已连接到自托管的 MongoDB Enterprise 或 MongoDB Community 部署,请运行 db.getMongo() 方法以返回连接字符串。

如果您未连接到部署,则可以根据要使用的连接类型确定连接字符串。请参阅 SRV 连接格式以了解 SRV 连接字符串语法,或者参阅标准连接字符串格式以了解标准连接字符串语法。

您的自托管连接字符串将类似于以下示例:

以下副本集连接字符串包含这些元素:

mongosh "mongodb+srv://mongodb0.example.com/?authSource=admin&replicaSet=myRepl" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl

如果用户名或密码包含以下字符,则必须使用百分比编码转换这些字符:

$ : / ? # [ ] @

以下分片集群连接字符串包含这些元素:

  • 连接字符串中的 mongos 主机

  • 它以用户 myDatabaseUser 和密码 D1fficultP%40ssw0rd 进行身份验证,以实施访问控制

mongosh "mongodb+srv://mongos0.example.com/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin

如果用户名或密码包含以下字符,则必须使用百分比编码转换这些字符:

$ : / ? # [ ] @

以下独立连接字符串以用户 myDatabaseUser 的身份和密码 D1fficultP%40ssw0rd 进行身份验证,以实施访问控制:

mongosh "mongodb+srv://mongodb0.example.com/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin

如果用户名或密码包含以下字符,则必须使用百分比编码转换这些字符:

$ : / ? # [ ] @

以下副本集连接字符串包含这些元素:

mongosh "mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl

如果用户名或密码包含以下字符,则必须使用百分比编码转换这些字符:

$ : / ? # [ ] @

以下分片集群连接字符串包含这些元素:

mongosh "mongodb://mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin

如果用户名或密码包含以下字符,则必须使用百分比编码转换这些字符:

$ : / ? # [ ] @

以下独立连接字符串实施访问控制

mongosh "mongodb://@mongodb0.example.com:27017/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin

如果用户名或密码包含以下字符,则必须使用百分比编码转换这些字符:

$ : / ? # [ ] @

有关连接string选项的完整列表,请参阅SRV 连接格式标准连接string格式。 有关更多示例,请参阅连接string示例。

您可以使用下列格式中的一种来指定 MongoDB 连接字符串:

除非连接到 在线存档 ,否则MongoDB Atlas集群使用 SRV 连接格式 。

MongoDB 支持 DNS 构建的种子列表。通过使用 DNS 构建可用服务器列表,可以提高部署的灵活性,并能够轮流更改服务器,而无需重新配置客户端。

SRV URI 连接模式具有以下形式:

mongodb+srv://[username:password@]host[/[defaultauthdb][?options]]

有关更多示例,请参阅连接string示例。

连接字符串包括以下组件:

组件
说明

mongodb://mongodb+srv://

标识标准连接格式 (mongodb://) 或 SRV 连接格式 (mongodb+srv://) 字符串的必需前缀。 要学习;了解有关每种格式的更多信息,请参阅标准连接字符串格式和 SRV 连接格式。

username:password@

可选。身份验证凭证。

如果指定,客户端将尝试向authSource验证用户身份。 如果未指定authSource ,客户端将尝试向defaultauthdb验证用户身份。 如果未指定defaultauthdb ,则写入admin数据库。

如果用户名或密码包含以下字符,则必须使用百分比编码转换这些字符:

$ : / ? # [ ] @

另请参阅 authSource

host[:port]

运行 mongod 实例(或分片集群的 mongos 实例)的主机(和可选的端口号)。可以指定主机名、IP 地址或 UNIX 域套接字。根据您的部署拓扑,指定尽可能多的主机:

  • 对于独立实例,请指定独立 mongod 实例的主机名。

  • 对于副本集,副本集配置中列出的 mongod 实例的主机名。

  • 对于分片集群,请指定 mongos 实例的主机名。

如果未指定端口号,则使用默认端口 27017

如果使用 SRV URI 连接格式,则只能指定一个托管,不能指定端口。否则,驱动程序或 mongosh 会引发解析错误,并且不执行 DNS 解析。

/defaultauthdb

可选。 如果连接string包含 username:password@身份验证凭证但未指定authSource选项,则要使用的身份验证数据库。

如果authSourcedefaultauthdb均未指定,客户端将尝试在admin数据库中验证指定用户的身份。

?<options>

可选。 将连接特定选项指定为 <name>=<value> 对的查询string 。 有关这些选项的完整说明,请参阅连接string选项

如果连接字符串未指定数据库/,则必须在最后一个 host 和选项字符串开头的问号 (?) 之间指定斜杠 (/)。

为了利用 DNS 种子列表,请使用与标准连接字符串相同的语法,前缀为 mongodb+srv,而不是标准 mongodb+srv 向客户端指示后面的主机名对应于 DNS SRV 记录。然后,驱动程序或 mongosh 将查询 DNS 以获取记录,以确定哪些主机正在运行 mongodmongos 实例。

注意

使用 +srv 连接string修饰符会自动将连接的tls (或等效的ssl )选项设置为 true。 您可以通过在查询tls sslfalsetls=falsessl=false中使用 (或 )将 (或等效的 )选项显式设置为string 来覆盖此行为。

使用 +srv 格式时,必须以 <hostname>.<domain>.<TLD>. 格式指定 hostnamedomaintop-level domain (TLD)。这个表格显示占位符与示例值的对应关系:

占位符
例子

<hostname>

server

<domain>

example

<TLD>

com

<hostname>.<domain>.<TLD>

server.example.com

此示例显示了正确使用 <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)。如果父域和主机名不匹配,您将无法连接。

此示例显示了缺少 <hostname> 的 DNS 种子列表连接字符串。这是不正确的,会引发错误。

# This connection string is missing the <hostname> and raises a connection error
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@example.com/

与标准连接字符串一样,DNS 种子列表连接字符串支持将选项指定为查询字符串。使用 DNS 种子列表连接字符串,可以通过 TXT 记录指定以下选项:

  • replicaSet

  • authSource

每个 mongod 实例只能指定一条 TXT 记录。如果 DNS 中出现多条 TXT 记录和/或 TXT 记录包含 replicaSetauthSource 以外的选项,客户端将返回错误。

DNS 条目的 TXT 记录类似于:server.example.com

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

注意

如果没有可用的 DNS 记录与连接string中标识的主机名相对应,则 mongodb+srv 选项将失败。 如果使用 +srv 连接string修饰符,则连接的tls (或等效的ssl )选项将设立为 true。 您可以通过在查询tls sslfalsetls=falsessl=false中使用 (或 )将 (或等效的 )选项显式设置为string 来覆盖此行为。

有关使用 DNS 种子列表连接格式将 mongosh 连接到副本集的示例,请参阅 mongosh 连接选项

本节介绍了用于连接到自托管 MongoDB 独立部署、副本集或分片集群的 MongoDB 连接 URI 的标准格式。

标准 URI 连接方案的形式如下:

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

有关更多示例,请参阅连接string示例。

You can specify a default database in the [/defaultauthdb] field of the connection string. The client uses the specified [/defaultauthdb] database as the default database. If unspecified by the connection string, the default database is the test database.

You can specify the authentication database in your connection string using the authSource connection option. If specified, the client uses this database to verify your user identity and credentials. If authSource is unspecified, it defaults to the [/defaultauthdb] database. If both authSource and [/defaultauthdb] are unspecified, authSource defaults to the admin database.

The following connection string sets the default database to myDefaultDB and the authentication database to admin:

mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/myDefaultDB?authSource=admin

连接字符串包括以下组件:

组件
说明

mongodb://mongodb+srv://

标识标准连接格式 (mongodb://) 或 SRV 连接格式 (mongodb+srv://) 字符串的必需前缀。 要学习;了解有关每种格式的更多信息,请参阅标准连接字符串格式和 SRV 连接格式。

username:password@

可选。身份验证凭证。

如果指定,客户端将尝试向authSource验证用户身份。 如果未指定authSource ,客户端将尝试向defaultauthdb验证用户身份。 如果未指定defaultauthdb ,则写入admin数据库。

如果用户名或密码包含以下字符,则必须使用百分比编码转换这些字符:

$ : / ? # [ ] @

另请参阅 authSource

host[:port]

运行 mongod 实例(或分片集群的 mongos 实例)的主机(和可选的端口号)。可以指定主机名、IP 地址或 UNIX 域套接字。根据您的部署拓扑,指定尽可能多的主机:

  • 对于独立实例,请指定独立 mongod 实例的主机名。

  • 对于副本集,副本集配置中列出的 mongod 实例的主机名。

  • 对于分片集群,请指定 mongos 实例的主机名。

如果未指定端口号,则使用默认端口 27017

如果使用 SRV URI 连接格式,则只能指定一个托管,不能指定端口。否则,驱动程序或 mongosh 会引发解析错误,并且不执行 DNS 解析。

/defaultauthdb

可选。 如果连接string包含 username:password@身份验证凭证但未指定authSource选项,则要使用的身份验证数据库。

如果authSourcedefaultauthdb均未指定,客户端将尝试在admin数据库中验证指定用户的身份。

?<options>

可选。 将连接特定选项指定为 <name>=<value> 对的查询string 。 有关这些选项的完整说明,请参阅连接string选项

如果连接字符串未指定数据库/,则必须在最后一个 host 和选项字符串开头的问号 (?) 之间指定斜杠 (/)。