对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

defaultMaxTimeMS

defaultMaxTimeMS

8.0版本新增。

Atlas 集群和自托管部署

指定集群范围内的默认时间限制(以毫秒为单位),要求单个读取操作必须在此默认时间限制内完成。如果查询指定了 maxTimeMS() 选项,则该值将覆盖 defaultMaxTimeMS 值。

defaultMaxTimeMS 适用于以下读取操作:

要修改集群参数,您必须以具有以下角色之一的用户身份进行身份验证:

要为部署设置defaultMaxTimeMS ,请对admin数据库运行以下命令:

db.adminCommand(
{
setClusterParameter: {
defaultMaxTimeMS: { readOperations: <value> }
}
}
)

要查看defaultMaxTimeMS的当前值,请对admin数据库运行以下命令:

db.adminCommand( { getClusterParameter: "defaultMaxTimeMS" } )

默认, defaultMaxTimeMS.readOperations为0 ,表示未设立默认查询超时。 如果没有默认查询超时,查询将一直运行,直到返回结果或失败。

如果查询指定了maxTimeMS()选项,则该值将覆盖defaultMaxTimeMS值。

注意

defaultMaxTimeMS 仅应用于读取操作。

包含 $out 或 $merge 阶段的聚合会执行写入操作,因此不受 defaultMaxTimeMS 的限制。maxTimeMS() 值仍然应用于这些聚合。

If your deployment needs to run long queries, such as analytics node queries, you must specify a timeout for those queries at the operation level using maxTimeMS(). If you don't specify an operation timeout, those queries use the defaultMaxTimeMS timeout, and won't run for the required amount of time.

以下命令将默认查询超时设置为5000毫秒:

db.runCommand( {
setClusterParameter: {
defaultMaxTimeMS: { readOperations: 5000 }
}
} )

要检查defaultMaxTimeMS的值,请运行以下命令:

db.adminCommand( { getClusterParameter: "defaultMaxTimeMS" } )
{
"clusterParameters" : [
{
"_id" : "defaultMaxTimeMS",
"clusterParameterTime" : Timestamp(1711564868, 17),
"readOperations" : Long(5000)
}
],
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1712161244, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : Long(0)
}
},
"operationTime" : Timestamp(1712161244, 1)
}

为部署设立defaultMaxTimeMS后,请考虑以下查询:

db.test.find( { name: "Carol" } )
db.test.find( { name: "Carol" } ).maxTimeMS( 8000 )

第一个查询使用5的defaultMaxTimeMS值, 000毫秒。

第二个查询指定了maxTimeMS() ,它会覆盖defaultMaxTimeMS并导致查询在8 ( 000毫秒)后超时。