文档菜单
文档首页
/ / /
Laravel MongoDB
/ /

连接选项

本页内容

  • 概述
  • 连接和身份验证选项
  • 添加连接和身份验证选项
  • 选项描述
  • 驱动连接选项

在本指南中,您可以了解连接、身份验证和驱动器选项,以及如何在您的 Laravel 应用程序的数据库连接配置中指定它们。连接选项传递给 MongoDB PHP 库,该库管理您的数据库连接。

要了解更多关于 MongoDB PHP 库的信息,请参阅MongoDB PHP 库文档.

本指南涵盖以下主题

以下章节将介绍如何将常见的连接和身份验证选项添加到配置文件中

您可以在 Laravel Web 应用的config/database.php 配置文件中使用以下方法之一来指定连接或身份验证选项

  • options 数组项中,将设置和值作为数组项添加。

  • dsn 数组项指定的连接字符串上追加设置和值作为查询字符串参数。

要指定 options 数组中的选项,请添加其名称和值作为数组项,如下例所示

'connections' => [
'mongodb' => [
'dsn' => 'mongodb+srv://mongodb0.example.com/',
'driver' => 'mongodb',
'database' => 'sample_mflix',
'options' => [
'appName' => 'myLaravelApp',
'compressors' => 'zlib',
'zlibCompressionLevel' => 7,
],
],
],

要将选项作为参数添加到连接字符串中,请使用以下查询字符串语法格式:

  • 在主机信息和参数之间添加问号字符,?

  • 通过格式化它们为<option>=<value>来添加选项。

  • 在选项和值对之间插入与符号字符,&,以分隔它们。

以下设置示例显示了连接字符串参数的语法

'dsn' => 'mongodb+srv://mongodb0.example.com/?appName=myLaravelApp&compressors=zlib',

以下表格描述了连接和认证选项及其默认值

选项名称
可接受值
默认值
描述
appName
字符串
None
指定MongoDB PHP库在握手过程中发送给MongoDB部署的应用程序名称。
指定appName可以帮助您在服务器日志中识别与该应用程序相关的活动。
authMechanism
字符串
None
指定要使用的认证机制。如果您不指定此选项,驱动程序将使用默认的认证机制。有关更多信息,请参阅服务器手册中的认证
authMechanismProperties
字符串
None
指定与authMechanism选项中设置的认证机制相关的更多属性。
authSource
字符串
参见描述
指定用于认证的数据库。
对于基于SCRAM的认证机制,此选项默认为admin,对于MONGODB-X509机制,为$external,对于PLAIN机制,为数据库名称或$external
compressors
字符串列表,以逗号分隔
None
指定MongoDB PHP库在指定顺序中使用的压缩程序,以减少MongoDB和您的应用程序之间通过网络传输的数据量。
connectTimeoutMS
非负整数
10000(10秒)
指定连接超时时间(以毫秒为单位),在尝试连接到服务器时传递给每个底层的TCP流。
directConnection
布尔值
false
指定是否直接连接到单个主机,而不是发现并连接到集群中的所有服务器。有关此设置的更多信息,请参阅连接指南中的“直接连接”。
heartbeatFrequencyMS
大于或等于500的整数
10000(10秒)
指定每个监控线程在执行服务器检查之间等待的时间(毫秒)。
journal
布尔值
false
请求确认操作已传播到磁盘日志中。
localThresholdMS
非负整数
15
指定与所有合适服务器中最短往返时间相比,驱动程序和服务器之间平均往返时间可以持续的时间(毫秒)。
0的值表示没有延迟窗口,因此只有平均往返时间最低的服务器才有资格。
maxIdleTimeMS
非负整数
0
指定连接可以在连接池中保持空闲的时间(毫秒),直到服务器关闭它。
0的值表示客户端不会关闭空闲连接。
maxStalenessSeconds
-1,或任何大于或等于90的整数
-1
指定从属节点在给定操作中可以落后主节点最大延迟时间(秒)。
此选项的值必须至少为90,否则操作会引发错误。值为-1表示没有最大延迟。
maxPoolSize
非负整数
10
指定MongoDB PHP库可以为特定服务器创建的连接池中连接的最大数量。
如果尝试操作时,maxPoolSize连接已被借出,则操作将等待正在进行的操作完成并将连接返回到池中。
minPoolSize
非负整数
0
指定在给定时间内服务器连接池中可用的连接的最小数量。
如果池中的连接少于minPoolSize,则服务器将在后台添加连接,直到达到minPoolSize的值。
readConcernLevel
字符串
None
指定MongoDB PHP库执行的操作的默认读取关注级别。有关更多信息,请参阅服务器手册中的读取关注
readPreference
字符串
primary
指定MongoDB PHP库如何将读取操作路由到副本集成员。有关更多信息,请参阅服务器手册中的读取偏好
readPreferenceTags
逗号分隔的关键字值对列表
None
指定要考虑的操作的副本集成员。此键的每个实例都是一个单独的标签集。驱动程序会检查每个标签集,直到找到一个或多个具有每个标签的服务器。
replicaSet
字符串
None
指定MongoDB PHP库连接到的副本集的名称。
retryReads
布尔值
true
指定MongoDB PHP库是否在操作失败时重试读取操作。
serverSelectionTimeoutMS
非负整数
30000(30秒)
指定MongoDB PHP库在超时之前等待选择服务器进行操作的时间(毫秒)。
tls
布尔值
false
指定MongoDB PHP库在与服务器连接时使用的TLS配置。
默认情况下,TLS是关闭的。
tlsAllowInvalidCertificates
布尔值
false
指定如果服务器显示无效证书,MongoDB PHP库是否返回错误。
我们建议仅在测试环境中将此选项设置为true,以避免在应用程序中创建安全漏洞。
tlsCAFile
字符串
参见描述
指定 MongoDB PHP 库用于 TLS 的证书颁发机构 (CA) 文件的路径。
如果不指定此选项,驱动程序将使用来自 webpki-roots crate 的 Mozilla 根证书。
tlsCertificateKeyFile
字符串
None
指定 MongoDB PHP 库向服务器提供的证书文件以验证其身份。
如果不设置此选项,MongoDB PHP 库不会尝试与服务器验证其身份。
tlsInsecure
布尔值
false
指定如果服务器显示无效证书,MongoDB PHP库是否返回错误。
我们建议仅在测试环境中将此选项设置为true,以避免在应用程序中创建安全漏洞。
非负整数或字符串
请求确认操作已传播到特定数量或类型的服务器。
None
有关更多信息,请参阅服务器手册中的 写关注 部分。
wTimeoutMS
非负整数
无超时
指定写关注的时间限制,单位为毫秒。如果操作在时间限制内未传播到请求的级别,MongoDB PHP 库将引发错误。
zlibCompressionLevel
介于 -19 之间的整数(包括)
-1
指定使用该压缩程序时 zlib 压缩的级别字段。
将值设置为 -1 选择默认压缩级别(6)。
将值设置为 0 指定不压缩,将值设置为 9 指定最大压缩。

要查看连接选项的完整列表,请参阅服务器手册中连接字符串指南的 连接字符串选项 部分。从页面右侧的 选择您的语言 下拉菜单中选择 PHP选择您的语言 下拉菜单。

驱动程序选项修改 MongoDB PHP 库的行为,该库管理 Laravel 应用程序和 MongoDB 之间的连接和所有操作。

您可以在 Laravel Web 应用的 config/database.php 配置文件中指定驱动程序选项。要添加驱动程序选项,请将设置和值作为数组项添加到 driver_options 数组项中,如下例所示

'connections' => [
'mongodb' => [
'dsn' => 'mongodb+srv://mongodb0.example.com/',
'driver' => 'mongodb',
'database' => 'sample_mflix',
'driver_options' => [
'serverApi' => 1,
'allow_invalid_hostname' => false,
],
],
]

请参阅 MongoDB PHP 库文档中的 $driverOptions: array 部分,获取驱动程序选项列表。

返回

连接指南