连接字符串(Connection Strings)
➤ 使用右上角的 Select your language(选择语言)下拉菜单,设置以下示例的语言。
您可以使用连接字符串来定义 MongoDB 实例与以下目标之间的连接:
您的应用程序,当您使用驱动程序进行连接时。
兼容性
您可以使用连接字符串连接到以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
完成如下步骤,找到您的连接字符串。
查找您的 MongoDB Atlas 连接字符串
要使用 Atlas CLI 查找 MongoDB Atlas 连接字符串,请安装 Atlas CLI 并通过其进行连接,然后运行以下命令。将 <clusterName>
替换为 MongoDB Atlas 集群的名称,并将 <projectId>
替换为项目 ID。
atlas clusters connectionStrings describe <clusterName> --projectId <projectId>
要了解更多信息,请参阅 atlas 集群资源 connectionStrings 描述。
要在 Atlas 用户界面中查找 MongoDB Atlas 连接字符串,请按照以下步骤操作:
在 MongoDB Atlas 用户界面中,前往项目的 Clusters 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
如果尚未出现,请单击侧边栏中的 Clusters(集群)。
会显示集群页面。
打开 Connection Method 对话框。
单击要连接的集群所对应的 Connect。
单击 Choose a Connection Method。MongoDB Atlas 默认选择Standard Connection。要使用私有端点进行连接,请选择 Private Endpoint。
您的 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
如果用户名或密码包含以下字符,则必须使用百分比编码转换这些字符:
$ : / ? # [ ] @
以下分片集群连接字符串包含这些元素:
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 连接格式 。
SRV 连接格式。
MongoDB 支持 DNS 构建的种子列表。通过使用 DNS 构建可用服务器列表,可以提高部署的灵活性,并能够轮流更改服务器,而无需重新配置客户端。
SRV URI 连接模式具有以下形式:
mongodb+srv://[username:password@]host[/[defaultauthdb][?options]]
有关更多示例,请参阅连接string示例。
连接字符串组件
连接字符串包括以下组件:
组件 | 说明 | |
---|---|---|
| 标识标准连接格式 ( | |
| 可选。身份验证凭证。 如果指定,客户端将尝试向 如果用户名或密码包含以下字符,则必须使用百分比编码转换这些字符:
另请参阅 | |
| ||
| 可选。 如果连接string包含 如果 | |
| 可选。 将连接特定选项指定为 如果连接字符串未指定数据库/,则必须在最后一个 |
为了利用 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
)。如果父域和主机名不匹配,您将无法连接。
此示例显示了缺少 <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 记录包含 replicaSet
或 authSource
以外的选项,客户端将返回错误。
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
标准连接字符串格式
本节介绍了用于连接到自托管 MongoDB 独立部署、副本集或分片集群的 MongoDB 连接 URI 的标准格式。
标准 URI 连接方案的形式如下:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
有关更多示例,请参阅连接string示例。
Connection String Database Options
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
连接字符串组件
连接字符串包括以下组件:
组件 | 说明 | |
---|---|---|
| 标识标准连接格式 ( | |
| 可选。身份验证凭证。 如果指定,客户端将尝试向 如果用户名或密码包含以下字符,则必须使用百分比编码转换这些字符:
另请参阅 | |
| ||
| 可选。 如果连接string包含 如果 | |
| 可选。 将连接特定选项指定为 如果连接字符串未指定数据库/,则必须在最后一个 |