ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Docs 菜单

planCacheClear

planCacheClear

删除集合的缓存查询计划。 指定计划缓存查询结构以删除该结构的缓存查询计划。 省略计划缓存查询结构以清除所有缓存的查询计划。

提示

mongosh 中,该命令也可以通过 PlanCache.clear()PlanCache.clearPlansByQuery() 辅助函数运行。

辅助方法对 mongosh 用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。

从 MongoDB 8.0开始,使用查询设置而不是添加索引筛选器。 从 MongoDB 8.0开始,索引筛选器已弃用。

查询设置的功能比索引筛选器更多。 此外,索引筛选器不是持久性的,您无法轻松地为所有集群节点创建索引筛选器。 要添加查询设置并探索示例,请参阅setQuerySettings

此命令可用于以下环境中托管的部署:

重要

M0 、M2 、M5 和 Flex 集群不支持此命令。有关更多信息,请参阅不支持的命令。

该命令具有以下语法:

db.runCommand(
{
planCacheClear: <collection>,
query: <query>,
sort: <sort>,
projection: <projection>,
comment: <any>
}
)

该命令采用以下可选字段:

字段
类型
说明

query

文档

可选。 计划缓存查询结构的查询谓词。 只有谓词的结构(包括字段名称)对形状重要;查询谓词中的值无关紧要。

projection

文档

可选。 与计划缓存查询结构关联的投影。

sort

文档

可选。 与计划缓存查询结构关联的排序。

comment

any

可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:

注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。

要查看存在缓存查询计划的查询结构,请参阅示例。

在使用 authorization 运行的系统中,用户必须拥有包括 planCacheWrite 操作在内的访问权限。

如果集合orders具有以下计划缓存查询结构:

{
"query" : { "qty" : { "$gt" : 10 } },
"sort" : { "ord_date" : 1 },
"projection" : { },
"planCacheShapeHash" : "9AAD95BE"
}

警告

从MongoDB 8.0 开始,现有的 queryHash字段将复制到名为 planCacheShapeHash 的新字段中。 如果您使用的是早期MongoDB版本,则只能看到 queryHash字段。 未来的MongoDB版本将删除已弃用的 queryHash字段,您需要改用 planCacheShapeHash字段。

以下操作会清除为该形状缓存的查询计划:

db.runCommand(
{
planCacheClear: "orders",
query: { "qty" : { "$gt" : 10 } },
sort: { "ord_date" : 1 }
}
)

orders以下示例清除collection的所有缓存查询计划:

db.runCommand(
{
planCacheClear: "orders"
}
)