文档菜单
文档首页
/
MongoDB 手册
/ / /

planCacheClearFilters

本页内容

  • 定义
  • 兼容性
  • 语法
  • 命令字段
  • 所需访问权限
  • 示例
planCacheClearFilters

删除在集合上删除索引过滤器。虽然索引过滤器只存在于服务器进程期间,并在关闭后不会持久化,但您也可以使用planCacheClearFilters 命令来清除现有的索引过滤器。

指定要删除特定索引过滤器的计划缓存查询形状。省略计划缓存查询形状将清除集合上的所有索引过滤器。

从 MongoDB 8.0 版本开始,使用查询设置而不是添加 索引过滤器。从 MongoDB 8.0 版本开始,索引过滤器已被弃用。

查询设置比索引过滤器具有更多功能。此外,索引过滤器不可持久,并且您不能轻松地为所有集群节点创建索引过滤器。要添加查询设置并查看示例,请参阅 setQuerySettings

此命令在以下环境中的部署中可用

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

重要

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

该命令具有以下语法

db.runCommand(
{
planCacheClearFilters: <collection>,
query: <query pattern>,
sort: <sort specification>,
projection: <projection specification>,
collation: { <collation> },
comment: <any>
}
)

该命令具有以下字段

字段
类型
描述
planCacheClearFilters
string
要从其中删除索引筛选器的集合名称。
查询
文档

可选。要删除的索引筛选器的查询谓词。如果省略,则命令会从集合中清除所有索引筛选器。

查询谓词中的值不

排序
文档
可选。要删除的索引筛选器的排序,如果有的话。
投影
文档
可选。要删除的索引筛选器的投影,如果有的话。
校对
文档

指定操作要使用的校对

校对允许用户指定字符串比较的语言特定规则,例如字母大小写和重音符号的规则。

排序选项具有以下语法

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

在指定排序时,locale字段是必需的;所有其他排序字段都是可选的。有关字段的说明,请参阅排序文档。

如果未指定排序,但集合具有默认排序(请参阅db.createCollection()),则操作使用为集合指定的排序。

如果没有为集合或操作指定排序,MongoDB将使用在先前版本中用于字符串比较的简单二进制比较。

您不能为一个操作指定多个排序。例如,您不能为每个字段指定不同的排序,或者在执行带排序的查找时,您不能为查找和排序使用不同的排序。

从MongoDB 6.0开始,索引过滤器使用之前使用planCacheSetFilter命令设置的排序

从 MongoDB 8.0 版本开始,使用查询设置而不是添加 索引过滤器。从 MongoDB 8.0 版本开始,索引过滤器已被弃用。

查询设置比索引过滤器具有更多功能。此外,索引过滤器不可持久,并且您不能轻松地为所有集群节点创建索引过滤器。要添加查询设置并查看示例,请参阅 setQuerySettings

注释
任何

可选。用户提供的注释,用于附加到此命令。设置后,此注释将出现在以下位置的相关记录旁边

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

用户必须具有包括planCacheIndexFilter操作的访问权限。

“orders”集合包含以下索引过滤器

{
"query" : { "status" : "A" },
"sort" : { "ord_date" : -1 },
"projection" : { },
"indexes" : [ { "status" : 1, "cust_id" : 1 } ]
}
{
"query" : { "status" : "A" },
"sort" : { },
"projection" : { },
"indexes" : [ { "status" : 1, "cust_id" : 1 } ]
}
{
"query": { "item": "Movie" },
"collation": { locale: "en_US" },
"indexes": [ { "item": 1, "order_date": 1 , "quantity": 1 } ]
}

注意

从MongoDB 6.0开始,索引过滤器使用之前使用planCacheSetFilter命令设置的排序

从 MongoDB 8.0 版本开始,使用查询设置而不是添加 索引过滤器。从 MongoDB 8.0 版本开始,索引过滤器已被弃用。

查询设置比索引过滤器具有更多功能。此外,索引过滤器不可持久,并且您不能轻松地为所有集群节点创建索引过滤器。要添加查询设置并查看示例,请参阅 setQuerySettings

以下命令仅删除第二个索引过滤器

db.runCommand(
{
planCacheClearFilters: "orders",
query: { "status" : "A" }
}
)

由于在查询谓词中的值在确定计划缓存查询形状时无意义,因此以下命令也会删除第二个索引过滤器

db.runCommand(
{
planCacheClearFilters: "orders",
query: { "status" : "P" }
}
)

以下示例清除“orders”集合上的所有索引过滤器

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

以下示例清除包含对 Movie 的查询和排序 en_USorders 集合的索引过滤器

db.runCommand(
{
planCacheClearFilters: "orders",
query: { item: "Movie" },
collation: { locale: "en_US" }
}
)

提示

另请参阅

返回

planCacheClear