文档菜单
文档首页
/
MongoDB 手册
/

连接字符串

在本页

  • 兼容性
  • 查找您的 MongoDB Atlas 连接字符串
  • 查找您的自托管部署的连接字符串
  • 连接字符串格式
  • SRV 连接格式
  • 标准连接字符串格式

使用右上角的 选择您的语言 下拉菜单设置以下示例的语言。


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

  • 当您使用驱动程序连接时.

  • 例如,MongoDB CompassMongoDB Shell (mongosh)。

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

  • MongoDB Enterprise:基于订阅的自托管MongoDB版本

  • MongoDB Community:开源的、免费使用的自托管MongoDB版本

完成以下步骤以查找您的连接字符串。

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

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

有关更多信息,请参阅atlas clusters connectionStrings describe.

要在Atlas UI中查找您的MongoDB Atlas连接字符串,请按照以下步骤操作

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

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

  3. 如果尚未显示,请点击侧边栏中的集群

    将显示集群页面。

2
  1. 点击您想连接的集群的连接

  2. 点击选择连接方法。MongoDB Atlas默认选择标准连接。要使用私有端点连接,请选择私有端点

3

要连接到应用程序,请点击驱动程序。要使用工具连接,请点击您想使用以访问数据的工具。

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

  2. 选择连接到集群

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

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

mongosh "mongodb+srv://cluster0.example.mongodb.net myFirstDatabase" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?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%[email protected]/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin&replicaSet=myRepl

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

$ : / ? # [ ] @

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

  • 连接字符串中的 mongos 主机

  • 它以用户 myDatabaseUser 身份进行身份验证,使用密码 D1fficultP%40ssw0rd强制执行访问控制

mongosh "mongodb+srv://mongos0.example.com/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin

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

$ : / ? # [ ] @

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

mongosh "mongodb+srv://mongodb0.example.com/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]:27017/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?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%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%[email protected]: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%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]: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%[email protected]:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%[email protected]:27017/?authSource=admin

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

$ : / ? # [ ] @

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

您可以通过以下格式之一指定MongoDB连接字符串

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

MongoDB支持DNS构建的种子列表。使用DNS构建可用服务器列表允许更灵活的部署,并能够在不重新配置客户端的情况下更改轮换中的服务器。

SRV URI连接方案的格式如下

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

更多示例,请参阅连接字符串示例。

连接字符串包括以下组件

组件
描述
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

可选。如果连接字符串包含 username:password@ 认证凭据但未指定 authSource 选项时,将使用此认证数据库。

如果未指定 authSourcedefaultauthdb,客户端将尝试将指定的用户认证到 admin 数据库。

?<options>

可选。一个查询字符串,指定连接特定选项为 <name>=<value> 对。有关这些选项的完整描述,请参阅 连接字符串选项

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

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

注意

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

使用 +srv 格式时,您必须在以下格式中指定 hostnamedomain顶级域名(TLD)<hostname>.<domain>.<TLD>。下表显示了占位符与示例值之间的对应关系

占位符
示例
<hostname>
server
<domain>
example
<TLD>
com
<hostname>.<domain>.<TLD>
server.example.com

此示例显示了正确使用 <hostname>.<domain>.<TLD> 格式的 DNS 种子列表 连接字符串。它以用户 myDatabaseUser 和密码 D1fficultP%40ssw0rd 进行身份验证

mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/

相应的 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%[email protected]/

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

  • replicaSet

  • authSource

您可以为每个 mongod 实例指定一个 TXT 记录。如果 DNS 中出现多个 TXT 记录,或者 TXT 记录包含除 replicaSetauthSource 之外的其他选项,则客户端将返回错误。

对于 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%[email protected]:27317,mongodb2.example.com:27017/?replicaSet=mySet&authSource=authDB

您可以通过传递查询字符串中的选项来覆盖TXT记录中指定的选项。以下示例中,查询字符串为上面DNS条目的TXT记录中配置的authSource选项提供了覆盖。

mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/?connectTimeoutMS=300000&authSource=aDifferentAuthDB

考虑到对authSource的覆盖,标准格式的等效连接字符串为

mongodb://myDatabaseUser:D1fficultP%[email protected]:27317,mongodb2.example.com:27017/?connectTimeoutMS=300000&replicaSet=mySet&authSource=aDifferentAuthDB

注意

mongodb+srv选项如果不存在与连接字符串中指定的主机名对应的DNS记录,则会失败。如果您使用+srv连接字符串修饰符,连接的tls(或等效的ssl)选项被设置为true。您可以通过在查询字符串中显式将tls(或等效的ssl)选项设置为false来覆盖此行为,即使用tls=false(或ssl=false)。

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

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

标准的URI连接方案形式为

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

更多示例,请参阅连接字符串示例。

连接字符串包括以下组件

组件
描述
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

可选。如果连接字符串包含 username:password@ 认证凭据但未指定 authSource 选项时,将使用此认证数据库。

如果未指定 authSourcedefaultauthdb,客户端将尝试将指定的用户认证到 admin 数据库。

?<options>

可选。一个查询字符串,指定连接特定选项为 <name>=<value> 对。有关这些选项的完整描述,请参阅 连接字符串选项

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

返回

区域设置 & 默认参数