Docs 菜单
Docs 主页
/
MongoDB Manual
/

连接字符串(Connection Strings)

在此页面上

  • 兼容性
  • 查找连接字符串
  • 查找您的 MongoDB Atlas 连接字符串
  • 查找自托管部署的连接字符串
  • 连接字符串格式
  • SRV 连接格式。
  • 标准连接字符串格式
  • 连接字符串选项
  • 副本集选项
  • 连接选项
  • 连接池选项
  • 写关注选项
  • readConcern 选项
  • 读取偏好选项
  • 身份验证选项
  • 服务器选择和发现选项
  • 其他配置
  • 连接字符串示例
  • MongoDB Atlas 部署连接字符串示例
  • 自托管部署连接字符串示例

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


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

  • 您的应用程序,当您使用驱动程序进行连接时。

  • MongoDB CompassMongoDB Shell (mongosh) 等工具。

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

  • MongoDB Atlas :用于在云中部署 MongoDB 的完全托管服务

  • 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 集群资源 connectionStrings 描述

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

1
  1. 单击 MongoDB Atlas 侧边栏中的 Database

  2. 单击要连接的数据库部署所对应的 Connect

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

2

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

3
  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

注意

如果用户名或密码包含以下字符:

$ : / ? # [ ] @

这些字符必须使用百分比编码进行转换。

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

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

MongoDB Atlas 数据库部署使用 SRV 连接格式,除非您连接到 online archive

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)选项显式设置为 falsetls=false(或 ssl=false),以覆盖此行为。

使用 +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 且其记录与连接字符串中标识的主机名相对应,mongodb+srv 选项则会失败。如果您使用了 +srv 连接字符串修饰符,则会为此连接将 tls(或等效的 ssl)选项设为 true。可以在查询字符串中将 tls (或等效的 ssl)选项显式设置为 falsetls=false(或 ssl=false),以覆盖此行为。

有关使用 DNS 种子列表连接格式将 mongosh 连接到副本集的示例,请参阅 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 和选项字符串开头的问号 (?) 之间指定斜杠 (/)。

本节列出了 SRV 连接字符串和标准连接字符串的所有连接选项。

连接选项是以下形式的对:name=value

  • 使用驱动程序时,选项 name 不区分大小写。

  • 当使用 mongosh 时,选项 name 不区分大小写。

  • value 始终区分大小写。

用 & 符号 (&) 字符 name1=value1&name2=value2 分隔选项。在下面的示例中,连接包括 replicaSetconnectTimeoutMS 选项:

mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net:27017,db2.example.net:2500/?replicaSet=test&connectTimeoutMS=300000

注意

连接字符串参数的分号分隔符

为了提供向后兼容性,驱动程序目前接受分号 (;) 作为选项分隔符。

以下连接字符串连接到名为 myRepl 的副本集,其节点在指定主机上运行。它以用户 myDatabaseUser 和密码 D1fficultP%40ssw0rd 进行身份验证:

mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db0.example.com:27017,db1.example.com:27017,db2.example.com:27017/?replicaSet=myRepl
连接选项
说明
replicaSet

如果 mongod 是一个副本集的成员,请指定此副本集的名称。设置 replicaSet 连接选项,以确保跨驱动程序的行为的一致性。

连接到副本集时,向 uri 的host[:port]组件提供副本集节点的种子列表。有关具体详情,请参阅驱动程序文档。

directConnection

指定客户端是否直接连接到连接 URI 中的host[:port]

  • true:客户端仅向指定主机发送操作。它不会尝试发现副本集的任何其他成员。

  • false:客户端尝试发现副本集中的所有服务器,并向主节点发送操作。这是默认值。

下面的副本集连接字符串包括 tls=true 选项。它使用密码 D1fficultP%40ssw0rd 并以 myDatabaseUser 用户的身份进行身份验证。

mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db0.example.com,db1.example.com,db2.example.com/?replicaSet=myRepl&tls=true

或者您也可以使用等效的 ssl=true 选项:

mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db0.example.com,db1.example.com,db2.example.com/?replicaSet=myRepl&ssl=true
连接选项
说明
tls

启用或禁用 TLS/SSL:

  • true:使用 TLS/SSL 启动连接。SRV 连接格式的默认值。

  • false:启动此连接,而不使用 TLS/SSL。标准连接字符串格式的默认值。

注意

tls 选项等同于 ssl 选项。

如果 mongosh Shell 在命令行中指定了额外的 tls/ssl 选项,请改用 --tls 命令行选项。

ssl

一个布尔值,用于启用或禁用连接的 TLS/SSL:

  • true:使用 TLS/SSL 启动连接。SRV 连接格式的默认值。

  • false:启动此连接,而不使用 TLS/SSL。标准连接字符串格式的默认值。

注意

ssl 选项等同于 tls 选项。

如果 mongosh Shell 在命令行中指定了额外的 tls/ssl 选项,请改用 --ssl 命令行选项。

tlsCertificateKeyFile

指定包含客户端的 TLS/SSL X.509 证书或客户端的 TLS/SSL 证书和密钥的本地 .pem 文件的位置。

客户端将此文件提供给 mongod / mongos 实例。

如果显示的 x.509 证书在 mongod/mongos 主机系统时间后的 30 天内过期,则 mongod / mongos 会在连接时记录警告。请参阅 x.509 证书即将过期触发警告,了解更多信息。

并非所有驱动程序都支持此选项。请参阅驱动程序文档。

此连接字符串选项不可用于 mongo Shell。请改用命令行选项。

tlsCertificateKeyFilePassword

指定用来解密 tlsCertificateKeyFile 的密码。

并非所有驱动程序都支持此选项。请参阅驱动程序文档。

此连接字符串选项不可用于 mongo Shell。请改用命令行选项。

tlsCAFile

指定包含来自证书颁发机构的根证书链的本地 .pem 文件的位置。此文件用来验证 mongod/mongos 实例提供的证书。

并非所有驱动程序都支持此选项。请参阅驱动程序文档。

此连接字符串选项不可用于 mongo Shell。请改用命令行选项。

tlsAllowInvalidCertificates

绕过对 mongod/mongos 实例提供的证书进行验证

设定为 true 时,即使服务器提交的证书无效,也会连接到 MongoDB 实例。

并非所有驱动程序都支持此选项。请参阅驱动程序文档。

此连接字符串选项不可用于 mongo Shell。请改用命令行选项。

警告

禁用证书验证会产生漏洞。

tlsAllowInvalidHostnames

禁用 mongod/mongos 实例提供的证书的主机名验证。

设置为 true,以连接到 MongoDB 实例,即使服务器证书中的主机名与服务器的主机不匹配。

并非所有驱动程序都支持此选项。请参阅驱动程序文档。

此连接字符串选项不可用于 mongo Shell。请改用命令行选项。

警告

禁用证书验证会产生漏洞。

tlsInsecure

禁用各种证书验证。

设置为true可禁用证书验证。禁用的确切验证因驱动程序而异。请参阅驱动程序文档。

此连接字符串选项不可用于 mongo Shell。请改用命令行选项。

警告

禁用证书验证会产生漏洞。

连接选项
说明
connectTimeoutMS
超时之前尝试连接的时间(以毫秒为单位)。默认值为 10,000 毫秒,但特定驱动程序可能有不同的默认值。有关详细信息,请参阅驱动程序文档。
socketTimeoutMS
在尝试超时之前尝试在套接字上发送或接收的时间(以毫秒为单位)。默认情况下永不超时,但不同的驱动程序可能会有所不同。请参阅驱动程序文档。
连接选项
说明
compressors

以逗号分隔的压缩器字符串,用于在此客户端与 mongod / mongos 实例之间的通信中启用网络压缩。

您可以指定以下压缩程序:

如果指定多个压缩程序,则列出压缩程序的顺序与通信发起者都很重要。例如,如果客户端指定以下网络压缩程序 "zlib,snappy",而且 mongod 指定 "snappy,zlib",则客户端和 mongod 之间的消息使用 zlib

重要

当双方都启用网络压缩时,消息就会被压缩。否则,各方之间的消息不会被压缩。

如果双方不共享一个通用的压缩器,那么他们之间的消息将不被压缩。

mongosh 支持 uri 连接字符串选项 compressors

zlibCompressionLevel

一个整数:为 network compression 指定 zlib 时的压缩级别。

您可以指定范围从 -19 的整数值:

注意
-1
默认压缩级别,通常为 6 级压缩。
0
无压缩
1 - 9

压缩级别越高,速度越慢:

  • 1 提供最佳速度但最低压缩,以及

  • 9 提供最佳压缩,但速度最慢。

mongosh 支持。

大多数驱动程序实现某种连接池处理。某些驱动程序不支持连接池。有关连接池实施的更多信息,请参阅驱动程序文档。这些选项允许应用程序在连接到 MongoDB 部署时配置连接池。

连接选项
说明
maxPoolSize
连接池中的最大连接数。 默认值为 100
minPoolSize

连接池中的最小连接数。默认值为 0

注意

并非所有驱动程序都支持 minPoolSize 选项。有关驱动程序的详细信息,请参阅驱动程序文档。

maxConnecting

池可以同时建立的最大连接数。默认值为 2

maxConnecting 除了Rust 驱动程序之外的所有其他驱动程序都支持。

提高 maxConnecting 的值可以让客户端更快地与服务器建立连接,但会增加连接风暴的几率。如果 maxConnecting 的值太低,连接池可能会遇到严重的限制,并且客户端检查连接时尾延迟会增加。

maxIdleTimeMS

连接在池中可保持空闲状态的最大毫秒数,在此时间过后,连接将被删除或关闭。

并非所有驱动程序都支持此选项。

waitQueueMultiple

驱动程序乘以 maxPoolSize 值的数字,以提供等待从连接池中获取连接所允许的最大线程数。有关默认值,请参阅驱动程序文档。

并非所有驱动程序都支持此选项。

waitQueueTimeoutMS

线程可以等待连接变为可用状态的最长时间(以毫秒为单位)。有关默认值,请参阅驱动程序文档。

并非所有驱动程序都支持此选项。

写关注描述了从 MongoDB 请求的确认级别。写关注选项由以下提供支持:

您既可以在连接字符串中指定写关注,也可以将其作为 insertupdate 等方法的参数。如果在两处都指定了写关注,则方法参数会覆盖连接字符串设置。

MongoDB Atlas 部署连接字符串默认使用 "majority"。如果没有为 MongoDB Atlas 部署指定写关注,MongoDB Atlas 会强制 "majority"

以下副本集连接字符串使用 wtimeoutMS 写关注参数指定 "majority" 写关注和 5 秒超时:

mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db0.example.com,db1.example.com,db2.example.com/?replicaSet=myRepl&w=majority&wtimeoutMS=5000
连接选项
说明
w

对应于写关注 w 选项w 选项请求确认写入操作已传播到指定数量的 mongod 实例或带有指定标签的 mongod 实例。

您可以指定 number、字符串 majoritytag set

有关详细信息,请参阅 w 选项。

wtimeoutMS

对应于写关注 wtimeoutwtimeoutMS 指定写关注的时间限制(以毫秒为单位)。

wtimeoutMS0 时,写操作永远不会超时。请参阅 wtimeout,了解更多信息。

journal

对应写关注 j Option 选项。journal 选项请求 MongoDB 确认写入操作已写入日志。有关详细信息,请参阅 j 选项

如果将 journal 设置为 true,并指定小于 1 的 w 值,则以 journal 为准。

如需了解更多信息,请参阅写关注

对于 WiredTiger 存储引擎,MongoDB 引入了针对副本集和副本集分片的readConcern选项。

读关注允许客户端为源自副本集的读取操作选择一个隔离级别。

下面的副本集连接字符串指定了 readConcernLevel=majority

mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db0.example.com,db1.example.com,db2.example.com/?replicaSet=myRepl&readConcernLevel=majority
连接选项
说明
readConcernLevel

隔离级别。可接受以下值之一:

此连接字符串选项不适用于 mongosh。将读关注指定为特定操作的选项

有关详细信息,请参阅读关注

读取偏好描述了读取操作与副本集相关的行为。这些参数允许您在连接字符串中基于每个连接指定读取偏好。

注意

要使用驱动程序指定对冲读选项,请参阅驱动程序的读取偏好 API。

例如:

  • 以下指向副本集的连接字符串指定 secondary 读取偏好模式和 maxStalenessSeconds 值为 120 秒:

    mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db0.example.com,db1.example.com,db2.example.com/?replicaSet=myRepl&readPreference=secondary&maxStalenessSeconds=120
  • 下面是分片集群的连接字符串,其中指定了 secondary 读取偏好模式和 120 秒的 maxStalenessSeconds 值:

    mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos1.example.com,mongos2.example.com/?readPreference=secondary&maxStalenessSeconds=120
  • 以下指向分片集群的连接字符串指定 secondary 读取偏好模式以及三个 readPreferenceTags

    mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos1.example.com,mongos2.example.com/?readPreference=secondary&readPreferenceTags=dc:ny,rack:r1&readPreferenceTags=dc:ny&readPreferenceTags=

使用多个 readPreferenceTags 时顺序很重要。按顺序尝试 readPreferenceTags,直到找到匹配项。一旦找到,就会使用该规范找到所有符合条件的匹配成员,并忽略剩余的 readPreferenceTags。详情请参阅标记匹配顺序

连接选项
说明
readPreference

指定此连接的读取偏好。可能的值是:

包含读操作的分布式事务必须使用读取偏好 primary。给定事务中的所有操作必须路由至同一节点。

该连接字符串选项不适用于 mongo shell。请参见 cursor.readPref()Mongo.setReadPref()

maxStalenessSeconds

指定客户端在停止对从节点进行读取操作之前,从节点的陈旧程度(以秒为单位)。有关详情,请参阅读取偏好 maxStalenessSeconds

默认情况下,没有最大过期时限,客户端在选择将读取操作定向到的节点时,也不会考虑从节点的滞后。

maxStalenessSeconds 的最小值为 90 秒。指定 0 到 90 秒之间的值将产生错误。MongoDB 驱动程序将 -1maxStalenessSeconds 值视为“无最大过时性”,与省略 maxStalenessSeconds 的情况相同。

readPreferenceTags

指定标签文档为冒号分隔的键值对列表(逗号分隔)。例如,

  • 要指定标记文档 { "dc": "ny", "rack": "r1" },请在连接字符串中使用 readPreferenceTags=dc:ny,rack:r1

  • 要指定空标记文档 { },请使用 readPreferenceTags= 无需设置该值。

要指定标记文档列表,请使用多个 readPreferenceTags。例如,readPreferenceTags=dc:ny,rack:r1&readPreferenceTags=

使用多个 readPreferenceTags 时顺序很重要。按顺序尝试 readPreferenceTags,直到找到匹配项。有关详情,请参阅标签匹配顺序

该连接字符串选项不适用于 mongo shell。请参见 cursor.readPref()Mongo.setReadPref()

有关更多信息,请参阅读取偏好

以下指向副本集的连接字符串为 admin 数据库指定 authSource。换言之,根据 admin 数据库对用户凭证进行身份验证。

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

注意

如果用户名或密码包含以下字符:

$ : / ? # [ ] @

这些字符必须使用百分比编码进行转换。

连接选项
说明
authSource

指定与用户凭证相关的数据库名称。如果未指定 authSource,则 authSource 默认为连接字符串中指定的 defaultauthdb。如果未指定 defaultauthdb,则 authSource 默认为 admin

PLAIN (LDAP)、GSSAPI (Kerberos) 和 MONGODB-AWS (IAM) 身份验证机制要求将 authSource 设置为 $external,因为这些机制将凭证存储委托给了外部服务。

如果未在连接字符串中或未通过 --username 参数提供用户名,则 MongoDB 将忽略 authSource 值。

authMechanism

默认值:SCRAM-SHA-256

指定 MongoDB 用于验证连接的身份验证机制。如果您不指定 authMechanism 但提供用户档案,则 MongoDB 会尝试使用 SCRAM-SHA-256。如果失败,则回退到 SCRAM-SHA-1。

只有 MongoDB Enterprise Edition 的mongodmongos 实例提供 GSSAPI (Kerberos) 和 PLAIN (LDAP) 机制。

要使用 MONGODB-X509,必须启用 TLS/SSL。

如要使用 MONGODB-AWS,您必须连接到 MongoDB Atlas 集群,该集群已经过配置,可支持通过 AWS IAM 凭证(一个 AWS 访问密钥 ID 和一个秘密访问密钥,以及一个可选的 AWS 会话令牌)进行身份验证。MONGODB-AWS 身份验证机制要求将 authSource 设置为 $external

使用 MONGODB-AWS 时,请提供 AWS 访问密钥 ID 以作为用户名,并提供秘密访问密钥以作为密码。如果还使用了 AWS 会话令牌,则请为其提供 AWS_SESSION_TOKEN authMechanismProperties 值。

注意

如果 AWS 访问密钥 ID、秘密访问密钥或会话令牌包含以下字符:

$ : / ? # [ ] @

这些字符必须使用百分比编码进行转换。

或者,如果 AWS 访问密钥 ID、秘密访问密钥或会话令牌是通过各自的 AWS IAM 环境变量在您的平台上定义的,那么 mongosh 将使用这些环境变量值进行身份验证;您无需在连接字符串中指定它们。

有关同时使用连接字符串和此环境变量方法的 MONGODB-AWS 身份验证机制的示例用法,请参阅连接到 Atlas 集群

有关 MongoDB 中身份验证系统的更多信息,请参阅自管理部署上的身份验证。另请考虑使用 x。用于在自管理部署上对客户端进行身份验证的509证书,了解有关 x 509身份验证的更多信息。

authMechanismProperties

为指定的 authMechanism 定义属性,该属性采用以逗号分隔的冒号分隔键值对列表的形式。

可能的键值对有:

SERVICE_NAME:<string>

在连接到 Kerberized MongoDB 实例时设置 Kerberos 服务名称。该值必须与您要连接的 MongoDB 实例上设置的服务名称匹配。仅在使用 GSSAPI 身份验证机制时有效。

SERVICE_NAME 对于所有客户端和 MongoDB 实例,默认为 mongodb。如果更改 MongoDB 实例上的 saslServiceName 设置,则必须设置 SERVICE_NAME 以匹配该设置。仅在使用 GSSAPI 身份验证机制时有效。

CANONICALIZE_HOST_NAME:true|false
连接到 Kerberos 服务器时规范化客户端托管计算机的主机名。当主机报告的主机名与 Kerberos 数据库中的主机名不同时,这可能是必需的。默认值为 false。仅在使用 GSSAPI 身份验证机制时有效。
SERVICE_REALM:<string>
为 MongoDB 服务设置 Kerberos Realm。这对于支持跨 Realm 的身份验证(在此情况下,用户存在于一个 Realm,而服务则存在于另一 Realm 中)可能是必需的。仅在使用 GSSAPI 身份验证机制时有效。
AWS_SESSION_TOKEN:<security_token>
使用 AssumeRole 请求或使用指定此值的 AWS 资源(例如 Lambda)时,使用临时凭证设置 AWS 会话令牌以进行身份验证。仅在使用 MONGODB-AWS 身份验证机制时有效。您还必须拥有 AWS 访问密钥 ID 和秘密访问密钥。有关使用示例,请参阅连接到 Atlas 集群
gssapiServiceName

在连接到启用了 Kerberos 的MongoDB 实例时,负责设置 Kerberos 服务名称。该值必须与您要连接的 MongoDB 实例上所设的服务名称相匹配。

对于所有客户端和 MongoDB 实例,gssapiServiceName 默认为 mongodb。如果更改了 MongoDB 实例上的 saslServiceName 设置,则必须设置 gssapiServiceName 以匹配该设置。

gssapiServiceNameauthMechanismProperties=SERVICE_NAME:mongodb 已废弃的别名。有关您的驱动程序支持哪些选项以及它们之间的相对优先级的更多信息,请参阅您首选驱动程序版本的相应文档。

MongoDB 提供以下选项来配置 MongoDB 驱动程序和 mongos 实例如何选择要直接读取或写入操作的服务器。

连接选项
说明
localThresholdMS

用于在多个合适的 MongoDB 实例中选择的延迟窗口的大小(以毫秒为单位)。默认:15 毫秒。

所有驱动程序都使用 localThresholdMS。将延迟窗口大小指定为 mongos 时使用 localThreshold 别名。

serverSelectionTimeoutMS
指定在抛出异常之前阻止服务器选择的时间(以毫秒为单位)。默认:30,000 毫秒。
serverSelectionTryOnce

仅限单线程驱动程序。当为 true 时,指示驱动程序在服务器选择失败后扫描 MongoDB 部署一次,然后选择服务器或引发错误。当为 false 时,驱动程序会阻塞并搜索值不超过 serverSelectionTimeoutMS 的服务器。默认true

多线程驱动程序和 mongos 不支持 serverSelectionTryOnce

heartbeatFrequencyMS

heartbeatFrequencyMS 用于控制驱动程序检查 MongoDB 部署状态的频率。可指定检查之间的时间间隔(以毫秒为单位),该间隔从上一个检查结束到下一个检查开始为止。

默认值

  • 单线程驱动程序:60 秒。

  • 多线程驱动程序:10 秒。

mongos 不支持更改心跳检测的频率。

socketCheckIntervalMS

仅限单线程客户端。控制客户端检查 MongoDB 部署的 TCP 连接状态的频率。如果指定较低的值,客户端会更快地检测网络问题,但会使用更多的 CPU。默认值: 5秒。

并非所有驱动程序都支持此选项。请参阅驱动程序文档。

连接选项
说明
appName

指定自定义应用名称。应用程序名称出现在:

appName 连接选项可用于:

retryReads

启用可重试读取

可能的值为:

  • true。启用连接的可重试读取。

    官方 MongoDB 驱动程序默认为 true

  • false。禁用连接的可重试读取。

mongosh 不支持可重试读取。

retryWrites

启用可重试写入

可能的值为:

  • true。启用连接的可重试写入。

    官方 MongoDB 驱动程序默认为 true

  • false。禁用连接的可重试写入。

无论 retryWrites 的值为何,MongoDB 驱动程序均会重试事务提交与中止操作。有关事务可重试性的更多信息,请参阅事务错误处理

uuidRepresentation

可能的值为:

standard
标准二进制表示形式。
csharpLegacy
C# 驱动程序的默认表示形式。
javaLegacy
Java 驱动程序的默认表示形式。
pythonLegacy
Python 驱动程序的默认表示形式。

有关默认值,请参阅您的驱动程序的驱动程序文档。

注意

并非所有驱动程序都支持 uuidRepresentation 选项。有关驱动程序的详细信息,请参阅 驱动程序 文档。

loadBalanced

指定客户端是否正在连接到负载均衡器。此选项默认为false

仅当满足以下要求时才能将此选项设置为true

  • 您只需指定一个主机名。

  • 您没有连接到副本集。

  • srvMaxHosts选项未设置或值为0

  • directConnection选项未设置或值为false

srvMaxHosts
指定可以为分片拓扑创建的mongos连接数。将此选项设置为非负整数。 0是默认值,表示mongos连接的数量没有限制。

以下是常见连接目标的 URI 字符串示例。

以下示例连接字符串用于连接到 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 Atlas 集群,该集群已配置为支持通过 AWS IAM 凭证进行身份验证:

mongosh 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS

以这种方式使用 AWS IAM 凭证连接 Atlas 时,会使用 MONGODB-AWS authentication mechanism$external authSource,如本示例所示。

如果还使用 AWS 会话令牌,请为其提供 AWS_SESSION_TOKEN authMechanismProperties 值,如下所示:

mongosh 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>'
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>
mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>

注意

如果 AWS 访问密钥 ID、秘密访问密钥或会话令牌包含以下字符:

$ : / ? # [ ] @

这些字符必须使用百分比编码进行转换。

您还可以使用标准 AWS IAM 环境变量 在平台上设置这些凭证。当您使用 MONGODB-AWS authentication mechanism 时,mongosh 会检查以下环境变量:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

如果已设置了这些凭证,就无需在连接字符串中指定。

以下示例会在 bash Shell 中设置这些环境变量:

export AWS_ACCESS_KEY_ID='<aws access key id>'
export AWS_SECRET_ACCESS_KEY='<aws secret access key>'
export AWS_SESSION_TOKEN='<aws session token>'

在其他Shell中设置环境变量的事务语法会有所不同。有关更多信息,请参阅适用于您的平台的文档。

您可以使用以下命令验证这些环境变量是否已设置:

env | grep AWS

一旦制定,以下示例将使用这些环境变量连接到 MongoDB Atlas 集群:

mongosh 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'
mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS

以下示例连接字符串用于连接到自托管部署。

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

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

注意

如果用户名或密码包含以下字符:

$ : / ? # [ ] @

这些字符必须使用百分比编码进行转换。

以下用于连接到在本地默认端口上运行的数据库服务器:

mongosh "mongodb://localhost" --apiVersion 1 --username myDatabaseUser
mongodb://localhost
mongodb://localhost
mongodb://localhost
mongodb://localhost
mongodb://localhost
mongodb://localhost
mongodb://localhost
mongodb://localhost
mongodb://localhost
mongodb://localhost
mongodb://localhost
mongodb://localhost
mongodb://localhost

以下命令以用户 myDatabaseUser 的身份(密码:D1fficultP%40ssw0rd)连接并登录到 admin 数据库:

mongosh "mongodb://localhost" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost

以下命令以用户 myDatabaseUser 的身份(密码:D1fficultP%40ssw0rd)连接并登录到 records 数据库:

mongosh "mongodb://localhost/records" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost/records
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost/records
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost/records
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost/records
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost/records
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost/records
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost/records
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost/records
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost/records
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost/records
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost/records
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost/records
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost/records

连接到 UNIX 域套接字时,请使用 URL 编码的连接字符串。

下面以用户 myDatabaseUser 和密码 D1fficultP%40ssw0rd 连接到文件路径 /tmp/mongodb-27017.sock 的 UNIX 域套接字:

mongosh "mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@%2Ftmp%2Fmongodb-27017.sock

注意

并非所有驱动程序都支持 UNIX 域套接字。有关驱动程序的信息,请参阅驱动程序文档。

以下示例连接到具有两个成员的副本集,一个在 db1.example.net 上,另一个在 db2.example.net 上,用户为 myDatabaseUser,密码为 D1fficultP%40ssw0rd

注意

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

mongosh "mongodb://db1.example.net,db2.example.com/?replicaSet=test" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net,db2.example.com/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net,db2.example.com/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net,db2.example.com/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net,db2.example.com/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net,db2.example.com/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net,db2.example.com/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net,db2.example.com/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net,db2.example.com/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net,db2.example.com/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net,db2.example.com/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net,db2.example.com/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net,db2.example.com/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.net,db2.example.com/?replicaSet=test

以下命令可以用户 myDatabaseUser 的身份(密码为 D1fficultP%40ssw0rd)连接到一个副本集,该副本集中有三个成员在端口 270172701827019 上的 localhost 上运行:

注意

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

mongosh "mongodb://localhost,localhost:27018,localhost:27019/?replicaSet=test" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost,localhost:27018,localhost:27019/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost,localhost:27018,localhost:27019/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost,localhost:27018,localhost:27019/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost,localhost:27018,localhost:27019/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost,localhost:27018,localhost:27019/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost,localhost:27018,localhost:27019/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost,localhost:27018,localhost:27019/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost,localhost:27018,localhost:27019/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost,localhost:27018,localhost:27019/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost,localhost:27018,localhost:27019/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost,localhost:27018,localhost:27019/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost,localhost:27018,localhost:27019/?replicaSet=test
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@localhost,localhost:27018,localhost:27019/?replicaSet=test

以下命令可以用户 myDatabaseUser 的身份(密码:D1fficultP%40ssw0rd)连接到一个含三个成员的副本集,并将读取操作分配给从节点

注意

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

mongosh "mongodb://example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary

以下示例将连接到一个副本集,而其写关注被配置为等待大多数承载数据的有投票权成员确认复制成功,且超时时间为两秒。它会使用密码 D1fficultP%40ssw0rd 并以 myDatabaseUser 用户的身份进行身份验证。

注意

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

mongosh "mongodb://example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000

以下命令可以用户 myDatabaseUser 的身份(密码:D1fficultP%40ssw0rd)连接到一个含三个 mongos 实例的分片集群:

mongosh "mongodb://router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/

后退

配置文件设置和命令行选项映射

来年

数据库命令