连接字符串URI格式
在本页面
本文档介绍了URI格式,用于在官方MongoDB drivers.定义应用程序和MongoDB实例之间的连接 。有关驱动程序的列表和驱动程序文档的链接,请参见drivers。
连接字符串格式
你可以指定MongoDB连接字符串使用任何:
- the 标准连接字符串格式
the DNS Seedlist 连接格式.
标准连接字符串格式
本节描述用于连接到MongoDB部署的MongoDB连接URI的标准格式:独立、复制集或分片集群。
标准的URI连接方案有如下形式:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
例子
单机版
1.对于独立版本
mongodb://mongodb0.example.com:27017
2. 对于一个强制访问控制:
mongodb://myDBReader:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
- 复制集
注意
对于一个复制集,指定副本集配置中列出的
mongod
实例的主机名。对于复制集,包括
replicaSet
选项。
1.对于一个复制集:
mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?replicaSet=myRepl
2.对于强制访问控制的复制集,包括用户凭证:
mongodb://myDBReader:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
- 分片集群
注意
对于分片集群的连接字符串,在连接字符串中指定
mongos
主机。
1.对于分片集群:
mongodb://mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017
2.对于实施访问控制的分片集群,包括用户凭证:
mongodb://myDBReader:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
如果用户名或密码包含at符号@
,冒号:
,斜杠/
或百分号%
字符,请使用百分比编码
更多示例,请参见examples。
组件
标准的URI连接字符串包括以下组件:
组件 | 描述 |
---|---|
mongodb:// |
标识这是标准连接格式的字符串的必需前缀。 |
username:password@ |
可选的。身份验证凭据。 如果指定,则客户端将尝试向验证用户 authSource 。如果 authSource 未指定,则客户端将尝试向验证用户defaultauthdb 。如果defaultauthdb 未指定,则发送到admin 数据库。如果用户名或密码包含at符号 @ ,冒号: ,斜杠/ 或百分号% 字符,请使用百分比编码。另请参阅 authSource 。 |
host[:port] |
mongod 实例(或分片mongos 群集的实例)运行所在的主机(和可选的端口号) 。您可以指定主机名,IP地址或UNIX域套接字。根据您的部署拓扑指定尽可能多的主机:对于独立 mongod 实例,请指定独立实例的主机名 。对于复制集,请指定 mongod 复制集配置中列出的实例的主机名。对于分片群集,请指定 mongos 实例的主机名 。如果未指定端口号, 27017 则使用默认端口。 |
/defaultauthdb |
可选的。如果连接字符串包含username:password@ 身份验证凭据但未authSource 指定选项,则使用的身份验证数据库。如果两个 authSource 和defaultauthdb 未指定,客户端将尝试以指定用户的身份验证admin 数据库。 |
?<options> |
可选的。查询字符串,将连接特定的选项指定为<name>=<value> 对。有关这些选项的完整说明,请参见 连接字符串选项。如果连接字符串没有指定数据库/您必须在最后一台主机和开始选项字符串的问号之间指定一个斜杠(/)。 |
DNS Seedlist 连接格式
新增3.6版
除了标准的连接格式,MongoDB还支持一个DNS构造的Seedlist列表。使用DNS构造可用服务器列表允许更灵活的部署,并允许在不重新配置客户机的情况下轮流更改服务器。
为了利用DNSSeedlist列表,使用一个连接字符串前缀 mongodb+srv:,而不是标准的 mongodb:。+srv
向客户端表明后面的主机名对应于一个DNS srv记录。驱动程序或mongo
shell将查询DNS记录,以确定哪些主机正在运行mongod
实例。
注意
使用 +srv 连接字符串修饰符自动将该连接的
tls
(或等效的ssl
)选项设置为true。您可以通过将查询字符串中的tls
(或等效ssl
)选项显式设置为false
通过tls=false
(或ssl=false
)来覆盖此行为。
下面的例子显示了一个典型的DNS seedlist连接字符串的连接字符串:
mongodb+srv://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记录中返回的主机名必须与给定的主机名共享相同的父域(在本例中为
example.com
)。如果父域名和主机名不匹配,您将无法连接。
与标准连接字符串一样,DNS seedlist连接字符串支持将选项指定为查询字符串。使用DNSseedlist列表连接字符串,您还可以通过TXT记录指定以下选项:
replicaSet
authSource
您只能为每个mongod
实例指定一个TXT记录。如果多个TXT记录出现在DNS/或如果TXT记录包含一个选项,而不是replicaSet
或authSource
,客户端将返回一个错误。
TXT记录server.example.com
DN条目类似于:
记录 TTL Class Text
server.example.com. 86400 IN TXT“ replicaSet = mySet&authSource = authDB”
综合起来,DNS SRV记录和TXT记录中指定的选项解析为以下标准格式的连接字符串:
mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?replicaSet=mySet&authSource=authDB
您可以通过在查询字符串中传递选项来重写TXT记录中指定的选项。在下面的示例中,查询字符串为TXT中配置的authSource
选项提供了重写记录上面的DNS条目。
mongodb + srv://server.example.com/?connectTimeoutMS = 300000&authSource = aDifferentAuthDB
给定authSource
的重写,标准格式的等效连接字符串为:
mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017 /?connectTimeoutMS = 300000&replicaSet = mySet&authSource = aDifferentAuthDB
注意
如果没有与连接字符串中标识的主机名对应的可用DNS记录,mongodb+srv选项将失败。此外,使用
+srv
连接字符串修饰符会自动为连接设置tls
(或等效ssl
)选项true
。您可以通过将查询字符串中的tls
(或等效ssl
)选项显式设置为false
通过tls=false
(或ssl=false
)来覆盖此行为。
请看:
使用DNSSeedlist
列表连接格式连接到复制集提供一个使用DNSseedlist
列表连接格式连接mongo
shell到复制集的示例。
连接字符串选项
本节列出了所有连接选项。
连接选项是成对的,格式如下:name=value
。
name
使用驱动程序时,该选项不区分大小写。name
使用4.2+版本的mongo
Shell 时,该选项不区分大小写 。name
使用4.0版或更早版本的mongo
Shell 时,此选项区分大小写。value
始终是区分大小写的。
用&
字符分隔选项(即:&
)name1=value1&name2=value2
。在以下示例中,连接包括replicaSet
和 connectTimeoutMS
选项:
mongodb://db1.example.net:27017,db2.example.net:2500 /?replicaSet = test&connectTimeoutMS = 300000
用于连接字符串参数的分号分隔符:
为了提供向后兼容性,驱动程序目前接受分号(即;
)作为选项分隔符。
复制集选项
以下连接字符串到一个名为myRepl
的复制集,成员运行在指定的主机上:
mongodb://db0.example.com:27017,db1.example.com:27017,db2.example.com:27017 /?replicaSet = myRepl
连接选项 | 描述 |
---|---|
replicaSet |
如果mongod 是复制集的成员,则指定复制集的名称。当连接到复制集时,向 uri 的host[:port]组件提供复制集成员的seed列表。有关具体细节,请参考您的驱动程序文档。 |
连接选项
TLS选项
下面的连接字符串到一个复制集包括 tls=true
选项(在MongoDB 4.2可用):
mongodb://db0.example.com,db1.example.com,db2.example.com/?replicaSet = myRepl&tls = true
或者,你也可以使用等价的ssl=true
选项:
mongodb://db0.example.com,db1.example.com,db2.example.com/?replicaSet = myRepl&ssl = true
连接选项 | 描述 |
---|---|
tls |
为连接启用或禁用TLS / SSL:true :使用TLS / SSL启动连接。DNSseedlist 列表连接格式的默认设置 。false :在没有TLS / SSL的情况下启动连接。标准连接字符串格式的默认设置 。注意 该 tls 选项等效于该 ssl 选项。如果mongo shell从命令行指定了额外的 tls / ssl 选项,则使用--tls 命令行选项。4.2版中的新功能。 |
ssl |
用于连接启用或禁用TLS / SSL的布尔值:true :使用TLS / SSL启动连接。DNSseedlist 列表连接格式的默认设置 。false :在没有TLS / SSL的情况下启动连接。标准连接字符串格式的默认设置。注意 该 ssl 选项等效于该 tls 选项。如果mongo shell从命令行指定了额外的 tls / ssl 选项,则使用--tls 命令行选项。 |
tlsCertificateKeyFile |
指定.pem 包含客户端的TLS / SSL X.509证书或客户端的TLS / SSL证书和密钥的本地文件的位置。客户端将此文件呈现给 mongod / mongos 实例。4.4版本改变: mongod / mongos 记录连接上的警告如果给出x.509证书在mongod/mongos 主机系统时间的30天内到期。有关更多信息,请参见 x.509证书即将过期触发警告。并非所有驱动程序都支持此选项。请参阅 驱动程序文档。 此连接字符串选项不适用于 mongo shell。请改用命令行选项。4.2版中的新功能。 |
tlsCertificateKeyFilePassword |
指定用于反加密tlsCertificateKeyFile 的密码。并非所有驱动程序都支持此选项。请参阅 驱动程序文档。 此连接字符串选项不适用于 mongo shell。请改用命令行选项。4.2版中的新功能。 |
tlsCAFile |
指定.pem 包含来自证书颁发机构的根证书链的本地文件的位置。此文件用于验证mongod / mongos 实例提供的证书。并非所有驱动程序都支持此选项。请参阅 驱动程序文档。 此连接字符串选项不适用于 mongo shell。请改用命令行选项。4.2版中的新功能。 |
tlsAllowInvalidCertificates |
绕过mongod / mongos 实例提供的证书的验证设置为 true 连接到MongoDB实例,即使服务器当前存在无效证书。并非所有驱动程序都支持此选项。请参阅 驱动程序文档。 此连接字符串选项不适用于 mongo shell。请改用命令行选项。警告 禁用证书验证会产生漏洞。 4.2版中的新功能。 |
tlsAllowInvalidHostnames |
禁用mongod / mongos 实例提供的证书的主机名验证。设置为 true 连接到MongoDB实例,即使服务器证书中的主机名与服务器的主机不匹配。并非所有驱动程序都支持此选项。请参阅 驱动程序文档。 此连接字符串选项不适用于 mongo shell。请改用命令行选项。警告 禁用证书验证会产生漏洞。 4.2版中的新功能。 |
tlsInsecure |
禁用各种证书验证。 设置为 true 禁用证书验证。禁用的确切验证因驱动程序而异。请参阅 驱动程序文档。此连接字符串选项不适用于 mongo shell。请改用命令行选项。警告 禁用证书验证会产生漏洞。 4.2版中的新功能。 |
超时选项
连接选项 | 描述 |
---|---|
connectTimeoutMS |
超时之前尝试连接的时间(以毫秒为单位)。默认值是永不超时,尽管不同的驱动程序可能有所不同。请参阅驱动程序 文档。 |
socketTimeoutMS |
尝试超时之前在套接字上尝试发送或接收的时间(以毫秒为单位)。默认值是永不超时,尽管不同的驱动程序可能有所不同。请参阅 驱动程序文档。 |
压缩选项
连接选项 | 描述 |
---|---|
compressors |
由逗号分隔的压缩器字符串,用于在此客户端和mongod / mongos 实例之间进行通信时启用网络压缩。您可以指定以下压缩器: snappy zlib(在MongoDB 3.6或更高版本中可用) zstd(在MongoDB 4.2或更高版本中可用) 如果指定多个压缩器,那么列出压缩器的顺序和通信启动器的顺序都很重要。例如,如果客户端指定了以下网络压缩器“zlib,snappy”,而 mongod 指定了“snappy,zlib”,那么客户端和mongod 之间的消息就使用zlib。重要 当双方都启用网络压缩时,消息将被压缩。否则,各方之间的消息将不被压缩。 如果各方不共享一个公共压缩器,则各方之间的消息将不被压缩。 从MongoDB 4.0.5(和MongoDB 3.6.10)开始, mongo shell支持uri连接字符串选项compressors 。 |
zlibCompressionLevel |
如果使用zlib进行网络压缩 ,则指定压缩级别的整数。您可以指定一个从 -1 到9 的整数值::值 笔记 -1 默认压缩级别,通常是6 级压缩。0 无压缩1 -- 9 增加压缩级别但以速度为代价,具有:1 提供最佳速度,但压缩最少,9 提供最佳压缩效果,但速度最慢。不被 mongo shell支持。 |
连接池选项
大多数驱动程序实现某种类型的连接池处理。有些驱动程序不支持连接池。有关连接池实现的更多信息,请参见驱动程序文档。这些选项允许应用程序在连接到MongoDB部署时配置连接池。
连接选项 | 描述 |
---|---|
maxPoolSize |
连接池中的最大连接数。默认值为100 。 |
minPoolSize |
连接池中的最小连接数。默认值为0 。注意 并不是所有驱动程序都支持 minPoolSize 选项。有关驱动程序的信息,请参阅 驱动程序文档。 |
maxIdleTimeMS |
在删除和关闭连接之前,连接在池中可以保持空闲状态的最大毫秒数。 并非所有驱动程序都支持此选项。 |
waitQueueMultiple |
驱动程序将maxPoolSize 值乘以一个数字,以提供允许等待池中的连接可用的最大线程数。有关默认值,请参见/ drivers 文档。并非所有驱动程序都支持此选项。 |
waitQueueTimeoutMS |
线程可以等待连接可用的最长时间(以毫秒为单位)。有关默认值,请参见 / drivers文档。 并非所有驱动程序都支持此选项。 |
写关注选项
写关注描述了MongoDB请求的确认级别。下列情况支持写关注选项:
- MongoDB驱动程序
mongo
shellmongofiles
mongoimport
mongorestore
您可以在连接字符串中指定写关注,也可以将其指定为诸如insert
或update
等方法的参数。如果在两个地方都指定了写关注点,则method参数将覆盖连接字符串设置。
下面的连接字符串到一个复制集指定 "majority"
写关注和5秒超时使用wtimeoutMS
写关注参数:
mongodb://db0.example.com,db1.example.com,db2.example.com/?replicaSet = myRepl&w = majority&wtimeoutMS = 5000
连接选项 | 描述 |
---|---|
w |
对应于写关注w Option。该w 选项请求确认写操作已传播到指定数量的mongod 实例或 mongod 具有指定标签的实例。您可以指定 number ,字符串majority 或tag set 有关详细信息,请参见w Option。 |
wtimeoutMS |
对应于写关注点wtimeout. wtimeoutMS 为写关注指定了一个时间限制,以毫秒为单位。如果 wtimeoutMS 是0 ,写操作永远不会超时。有关更多信息,请参见wtimeout。 |
journal |
对应于写关注点j Option选项。该 journal 选项要求MongoDB确认已将写操作写入 日志。有关详细信息,请参见j选项。如果设置 journal 为true ,并指定w 小于1 的 值,则journal 优先。如果您将 journal 设置为true,并且 mongod 未启用日志功能(如) storage.journal.enabled ,则MongoDB将出错。 |
有关更多信息,请参见写关注点。
readConcern
选项
版本3.2中的新特性:对于WiredTiger存储引擎,MongoDB 3.2为复制集和复制集分片引入了readConcern选项。
Read Concern允许客户端为从复制集读取选择隔离级别。
下面的复制集连接字符串指定 readConcernLevel=majority
:
mongodb://db0.example.com,db1.example.com,db2.example.com/?replicaSet = myRepl&readConcernLevel = majority
连接选项 | 描述 |
---|---|
readConcernLevel |
隔离的程度。可以接受下列值之一:local majority linearizable available 此连接字符串选项不适用于 mongo shell。指定read关注点作为特定操作的选项。 |
有关更多信息,请参见读关注。
阅读首选项选项
读取首选项描述了与复制集相关的读取操作的行为。这些参数允许您在连接字符串中以每个连接为基础指定读取首选项。
注意
要使用驱动程序指定已对冲的读取选项,请参考 驱动程序的读取首选项API。
例如:
以下到复制集的连接字符串指定
secondary
读取首选项模式和maxStalenessSeconds
120秒的值:mongodb://db0.example.com,db1.example.com,db2.example.com/?replicaSet = myRepl&readPreference = secondary&maxStalenessSeconds = 120
以下到分片群集的连接字符串指定
secondary
读取首选项模式和maxStalenessSeconds
120秒的值:mongodb://mongos1.example.com,mongos2.example.com/?readPreference = secondary&maxStalenessSeconds = 120
以下到分片群集的连接字符串指定
secondary
读取首选项模式以及三种readPreferenceTags
:mongodb://mongos1.example.com,mongos2.example.com/?readPreference = secondary&readPreferenceTags = dc:ny,rack:r1&readPreferenceTags = dc:ny&readPreferenceTags =
使用多个readPreferenceTags
时,顺序很重要。按顺序尝试readPreferenceTags
,直到找到匹配项为止。一旦找到,该规范将用于查找所有符合条件的匹配成员,并忽略任何剩余的readPreferenceTags
。有关详细信息,请参见标签匹配顺序。
连接选项 | 描述 |
---|---|
readPreference |
指定此连接的读取首选项。可能的值为:primary (默认)primaryPreferred secondary secondaryPreferred nearest 包含读取操作的多文档事务必须使用读取首选项 primary 。给定事务中的所有操作必须路由到同一成员。此连接字符串选项不适用于 mongo shell。请参阅 cursor.readPref() 和 Mongo.setReadPref() 。 |
maxStalenessSeconds |
指定以秒为单位的秒数,表示客户机在停止将其用于读取操作之前会过时。有关详细信息,请参见 阅读首选项maxStalenessSeconds。 默认情况下,没有最大的过时度,客户机在选择将读操作指向何处时不会考虑辅助服务器的延迟。 最小值 maxStalenessSeconds 为90秒。指定0到90秒之间的值将产生错误。MongoDB驱动程序将maxStalenessSeconds 值-1 视为“没有最大过时性”,就好像maxStalenessSeconds 被忽略了一样 。重要 要使用 maxStalenessSeconds ,部署中的所有MongoDB实例都必须使用MongoDB 3.4或更高版本。如果任何实例在MongoDB的早期版本上,则驱动程序或mongod / mongos 将引发错误。3.4版的新功能。 |
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:// myDBReader:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017 /?replicaSet = myRepl &authSource = admin
如果用户名或密码包含'at'符号@
,冒号:
,斜杠/
或百分号%
字符,请使用百分比编码。
连接选项 | 描述 | |
---|---|---|
authSource |
指定与用户凭据关联的数据库名称。如果authSource 未指定,则 authSource 默认为defaultauthdb 连接字符串中指定的。如果defaultauthdb 未指定,则authSource 默认为admin 。普通身份验证机制(LDAP)、 GSSAPI (Kerberos)和MONGODB-AWS (IAM) 要求将authSource 设置为$external ,因为这些机制将凭据存储委托给外部服务。如果在连接字符串中或通过--username参数中没有提供用户名,MongoDB将忽略 authSource 值。 |
|
authMechanism |
指定MongoDB将用于认证连接的认证机制。可能的值包括: SCRAM-SHA-1 SCRAM-SHA-256( MongoDB 4.0中添加) MONGODB-X509 MONGODB-AWS (在MongoDB 4.4中添加了)GSSAPI(Kerberos) 普通(LDAP SASL) MongoDB 4.0删除了对 MONGODB-CR 身份验证机制的支持。MONGODB-CR 连接到MongoDB 4.0+部署时,不能指定为身份验证机制。仅MongoDB Enterprise mongod 和 mongos 实例提供GSSAPI (Kerberos)和 PLAIN (LDAP)机制。要使用 MONGODB-X509 ,您必须启用TLS / SSL。要使用 MONGODB-AWS ,您必须连接到已配置为支持通过AWS IAM凭证 (即AWS访问密钥ID和秘密访问密钥,以及可选的AWS会话令牌)进行身份验证的 MongoDB Atlas集群 。该认证机制需要 设置为。MONGODB-AWS authSource $external 使用时MONGODB-AWS ,请提供您的AWS访问密钥ID作为用户名,并提供秘密访问密钥作为密码。如果还使用 AWS会话令牌 ,请为其提供AWS_SESSION_TOKEN authMechanismProperties 值。如果AWS访问密钥ID,秘密访问密钥或会话令牌包含'at'符号 @ ,冒号: ,斜杠 / 或百分号% 字符,则必须使用百分比编码转换这些字符。或者,如果您使用各自的AWS IAM环境变量 在平台上定义了AWS访问密钥ID,秘密访问密钥或会话令牌,则 mongo Shell将使用这些环境变量值进行身份验证;您无需在连接字符串中指定它们。有关同时使用连接字符串和环境变量方法的身份验证机制的用法,请参阅连接到Atlas群集MONGODB-AWS 。有关MongoDB中身份验证系统的更多信息,请参阅身份验证。另请考虑 使用x.509证书对客户端进行身份验证,以获取有关x509身份验证的更多信息。 |
|
authMechanismProperties |
将指定的属性指定authMechanism 为以逗号分隔的冒号分隔的键/值对列表。可能的键值对为:SERVICE_NAME:<string> 连接到Kerberized MongoDB实例时,设置Kerberos服务名称。该值必须与您要连接的MongoDB实例上设置的服务名称匹配。仅在使用GSSAPI 身份验证机制时有效。SERVICE_NAME``mongodb 所有客户端和MongoDB实例默认为。如果更改saslServiceName MongoDB实例上的 设置,则必须进行设置SERVICE_NAME 以匹配该设置。仅在使用GSSAPI 身份验证机制时有效。`CANONICALIZE_HOST_NAME:true |
false连接到Kerberos服务器时,规范化客户端主机的主机名。当主机报告的主机名与Kerberos数据库中的主机名不同时,可能需要这样做。默认为 false。仅在使用[GSSAPI](https://docs.mongodb.com/master/core/authentication-mechanisms-enterprise/security-auth-kerberos)身份验证机制时有效 。 SERVICE_REALM:为MongoDB服务设置Kerberos领域。这对于支持跨域身份验证可能是必需的,在该跨域身份验证中,用户位于一个领域中,而服务位于另一个领域中。仅在使用[GSSAPI](https://docs.mongodb.com/master/core/authentication-mechanisms-enterprise/security-auth-kerberos)身份验证机制时有效。 AWS_SESSION_TOKEN:在使用[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 请求或使用指定该值的AWS资源(例如Lambda)时,设置AWS会话令牌以使用临时凭证进行身份验证。仅在使用 MONGODB-AWS` 身份验证机制时有效。您还必须具有一个AWS访问密钥ID和一个秘密访问密钥。有关示例用法,请参见 连接到Atlas群集。 |
gssapiServiceName |
连接到Kerberized MongoDB实例时,设置Kerberos服务名称。该值必须与您要连接的MongoDB实例上设置的服务名称匹配。gssapiServiceName mongodb 所有客户端和MongoDB实例默认为。如果更改 saslServiceName MongoDB实例上的设置,则必须进行设置gssapiServiceName 以匹配该设置。gssapiServiceName 是不推荐使用的别名 authMechanismProperties=SERVICE_NAME:mongodb 。有关驱动程序支持哪些选项以及它们之间的相对优先级的更多信息,请参考首选驱动程序版本的文档。 |
服务器选择和查找选项
MongoDB提供以下选项来配置MongoDB驱动程序和mongos
实例如何选择要将读取或写入操作定向到的服务器。
连接选项 | 描述 |
---|---|
localThresholdMS |
在多个合适的MongoDB实例中进行选择的等待时间窗口的大小(以毫秒为单位)。默认值:15毫秒。所有驱动程序都使用localThresholdMS 。localThreshold 将延迟窗口大小指定为时,请使用 别名mongos 。 |
serverSelectionTimeoutMS |
指定在引发异常之前为选择服务器而阻塞的时间(以毫秒为单位)。默认值:30,000毫秒。 |
serverSelectionTryOnce |
仅单线程驱动程序。如果为true ,则指示驱动程序在服务器选择失败后立即扫描MongoDB部署一次,然后选择服务器或引发错误。当为时false ,驱动程序将阻止并搜索不超过该serverSelectionTimeoutMS 值的服务器。 默认值:true 。并且mongos 不支持 多线程驱动程序serverSelectionTryOnce 。 |
heartbeatFrequencyMS |
heartbeatFrequencyMS 控制驱动程序何时检查MongoDB部署的状态。指定两次检查之间的间隔(以毫秒为单位),从上一次检查的结束到下一次检查的开始计算。默认值:单线程驱动程序:60秒。多线程驱动程序:10秒。mongos 不支持更改心跳检查的频率。 |
杂项配置
连接选项 | 描述 |
---|---|
appName |
指定自定义应用名称。应用名称出现在mongod 和日志,mongos 命令和方法输出中的currentOp.appName 字段,currentOp db.currentOp() 数据库探查器输出中的system.profile.appName 字段。如果您未指定自定义应用程序名称,则mongo 外壳程序将使用默认的“ ”。MongoDB Shell 版本4.0中的新功能。 |
retryReads |
启用可重试的读取。可能的值为:true 。启用连接的可重试读取。与MongoDB Server 4.2及更高版本兼容的官方MongoDB驱动程序默认为true 。false 。禁用连接的可重试读取。在mongo 外壳不支持重试读取。4.2版中的新功能。 |
retryWrites |
启用可重试写入。可能的值为:true 。启用连接的可重试写入。兼容MongoDB 4.2的官方驱动程序默认为true 。false 。禁用该连接的可重试写入。官方的MongoDB 4.0和3.6兼容驱动程序默认为false 。MongoDB驱动程序将重试 事务提交和中止操作, 而与的值无关retryWrites 。有关事务可重试性的更多信息,请参见 事务错误处理。3.6版的新功能。 |
uuidRepresentation |
可能的值为:standard 标准二进制表示形式。csharpLegacy C#驱动程序的默认表示。javaLegacy Java驱动程序的默认表示形式。pythonLegacy Python驱动程序的默认表示形式。对于默认设置,请参阅驱动程序的驱动程序 文档。注意并非所有驱动程序都支持该uuidRepresentation 选项。有关驱动程序的信息,请参阅驱动程序文档。 |
例子
以下提供了用于公共连接目标的示例URI字符串。
在本地运行的数据库服务器
以下连接到在默认端口上本地运行的数据库服务器:
mongodb://本地主机
admin
数据库
以下内容admin
以用户身份sysop
使用密码连接并登录到数据库 moon
:
mongodb:// sysop:moon @ localhost
records
数据库
以下内容records
以用户身份sysop
使用密码连接并登录到数据库 moon
:
mongodb:// sysop:moon @ localhost / records
UNIX域套接字
连接到UNIX域套接字时,请使用URL编码的连接字符串。
以下连接到具有文件路径的UNIX域套接字 /tmp/mongodb-27017.sock
:
mongodb://%2Ftmp%2Fmongodb-27017.sock
注意
并非所有驱动程序都支持UNIX域套接字。有关驱动程序的信息,请参阅驱动程序 文档。
在不同计算机上具有成员的副本集
以下内容连接到具有两个成员的副本集,一个成员db1.example.net
在另一个成员 上db2.example.net
:
注意
对于副本集,请指定mongod
副本集配置中列出的实例的主机名。
mongodb://db1.example.net,db2.example.com/?replicaSet = test
带有成员的副本集localhost
下面连接到副本集具有三个成员上运行localhost
的端口27017
,27018
以及27019
:
注意
对于副本集,请指定mongod
副本集配置中列出的实例的主机名。
mongodb://本地主机,本地主机:27018,本地主机:27019 /?replicaSet = test
具有读取分布的副本集
以下内容连接到具有三个成员的副本集,并将读取内容分发给第二副本:
注意
对于副本集,请指定mongod
副本集配置中列出的实例的主机名。
mongodb://example1.com,example2.com,example3.com/?replicaSet = test&readPreference = secondary
具有写关注级别的副本集
以下内容连接到具有写关注点的副本集,该副本集被配置为等待跨大多数数据承载投票成员的复制成功,并具有两秒的超时。
注意
对于副本集,请指定mongod
副本集配置中列出的实例的主机名。
mongodb://example1.com,example2.com,example3.com/?replicaSet = test&w = majority&wtimeoutMS = 2000
分片群集
以下连接到具有三个mongos
实例的分片群集:
mongodb://router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017 /
MongoDB Atlas集群
版本4.4中的新功能。
以下连接到已配置为支持通过AWS IAM凭证进行身份验证的MongoDB Atlas集群:
mongo'mongodb + srv:// <aws访问密钥ID>:<aws秘密访问密钥> @ cluster0.example.com / testdb?authSource = $ external&authMechanism = MONGODB-AWS'
如本示例所示,以这种方式使用AWS IAM凭据连接到Atlas使用 和和。MONGODB-AWS
[`$external
authSource
如果还使用AWS会话令牌,请为其提供AWS_SESSION_TOKEN
authMechanismProperties
值,如下所示:
mongo'mongodb + srv:// <aws访问密钥ID>:<aws秘密访问密钥> @ cluster0.example.com / testdb?authSource = $ external&authMechanism = MONGODB-AWS&authMechanismProperties = AWS_SESSION_TOKEN:<aws会话令牌>'
如果AWS访问密钥ID,秘密访问密钥或会话令牌包括'at'符号@
,冒号:
,斜杠/
或百分号%
字符,则必须使用百分比编码转换这些字符 。
您也可以使用标准AWS IAM环境变量在平台上设置这些凭证 。使用mongo
以下命令时,shell将检查以下环境变量:MONGODB-AWS
authentication mechanism
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
如果设置,则无需在连接字符串中指定这些凭据。
以下示例在bash
外壳中设置这些环境变量:
导出AWS_ACCESS_KEY_ID ='<aws访问密钥ID>'
导出AWS_SECRET_ACCESS_KEY ='<aws秘密访问密钥>'
导出AWS_SESSION_TOKEN ='<aws会话令牌>'
在其他shell中设置环境变量的语法将有所不同。有关更多信息,请查阅您平台的文档。
您可以使用以下命令验证是否已设置这些环境变量:
env | grep AWS
设置完成后,以下示例将使用以下环境变量连接到MongoDB Atlas集群:
mongo'mongodb + srv://cluster0.example.com/testdb?authSource = $ external&authMechanism
参见