连接字符串
➤使用右上角的 选择您的语言 下拉菜单设置以下示例的语言。
您可以使用连接字符串来定义 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>
您的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
如果用户名或密码包含以下字符,则必须使用 百分编码:
$ : / ? # [ ] @
以下分片集群连接字符串包含以下元素
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
如果用户名或密码包含以下字符,则必须使用 百分编码:
$ : / ? # [ ] @
连接字符串格式
您可以通过以下格式之一指定MongoDB连接字符串
MongoDB Atlas集群使用SRV连接格式,除非您连接到在线存档。
SRV连接格式
MongoDB支持DNS构建的种子列表。使用DNS构建可用服务器列表允许更灵活的部署,并能够在不重新配置客户端的情况下更改轮换中的服务器。
SRV URI连接方案的格式如下
mongodb+srv://[username:password@]host[/[defaultauthdb][?options]]
更多示例,请参阅连接字符串示例。
连接字符串组件
连接字符串包括以下组件
组件 | 描述 | |
---|---|---|
mongodb:// 或 mongodb+srv:// | ||
username:password@ | 可选。认证凭证。 如果指定,客户端将尝试将用户认证到 如果用户名或密码包含以下字符,则必须使用 百分编码:
另请参阅 | |
host[:port] | ||
/defaultauthdb | 可选。如果连接字符串包含 如果未指定 | |
?<options> | 可选。一个查询字符串,指定连接特定选项为 如果连接字符串未指定数据库,则必须在最后一个 |
为了利用 DNS 种子列表,请使用与标准连接字符串相同的语法,但前缀为 mongodb+srv
而不是标准 mongodb
。前缀 +srv
告诉客户端后面跟随的主机名对应一个 DNS SRV 记录。然后,驱动程序或 mongosh
将查询 DNS 以确定哪些主机正在运行 mongod
或 mongos
实例。
注意
使用 +srv
格式时,您必须在以下格式中指定 hostname
、domain
和 顶级域名(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 记录包含除 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%[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独立部署、副本集或分片集群的MongoDB连接URI的标准格式。
标准的URI连接方案形式为
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
更多示例,请参阅连接字符串示例。
连接字符串组件
连接字符串包括以下组件
组件 | 描述 | |
---|---|---|
mongodb:// 或 mongodb+srv:// | ||
username:password@ | 可选。认证凭证。 如果指定,客户端将尝试将用户认证到 如果用户名或密码包含以下字符,则必须使用 百分编码:
另请参阅 | |
host[:port] | ||
/defaultauthdb | 可选。如果连接字符串包含 如果未指定 | |
?<options> | 可选。一个查询字符串,指定连接特定选项为 如果连接字符串未指定数据库,则必须在最后一个 |