planCacheClearFilters
定义
planCacheClearFilters
删除集合上的索引筛选器。 虽然索引筛选器仅在服务器进程期间存在,并且在关闭后不会持续存在,但您也可以使用
planCacheClearFilters
命令清除现有的索引筛选器。指定计划缓存查询结构以删除特定索引过滤。 省略计划缓存查询结构以清除集合上的所有索引筛选器。
查询设置
从 MongoDB 8.0开始,使用查询设置而不是添加索引筛选器。 从 MongoDB 8.0开始,索引筛选器已弃用。
查询设置的功能比索引筛选器更多。 此外,索引筛选器不是持久性的,您无法轻松地为所有集群节点创建索引筛选器。 要添加查询设置并探索示例,请参阅setQuerySettings
。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
M 0 、M 2和 M 5集群不支持此命令。 有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.runCommand( { planCacheClearFilters: <collection>, query: <query pattern>, sort: <sort specification>, projection: <projection specification>, collation: { <collation> }, comment: <any> } )
命令字段
该命令具有以下字段:
字段 | 类型 | 说明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
planCacheClearFilters | 字符串 | 要从中删除索引筛选器的集合的名称。 | ||||||||||
query | 文档 | 可选。 要删除的索引筛选器的查询谓词。 如果省略,该命令会清除collection中的所有索引筛选器。
| ||||||||||
sort | 文档 | 可选。 要删除的索引筛选器的排序(如果有)。 | ||||||||||
projection | 文档 | 可选。 要删除的索引筛选器的投影(如果有)。 | ||||||||||
collation | 文档 | 指定用于操作的排序规则。 排序规则允许用户为字符串比较指定特定于语言的规则,例如字母大小写和重音符号规则。 排序规则选项的语法如下:
指定排序规则时, 如果未指定排序规则,但集合具有默认排序规则(请参阅 如果没有为收集或操作指定排序规则,MongoDB 将使用先前版本中使用的简单二进制比较来进行字符串比较。 您不能为一个操作指定多个排序规则。例如,您不能为每个字段指定不同的排序规则,或者如果执行带排序的查找,则不能使用一种排序规则进行查找而另一种排序规则进行排序。 从 MongoDB 6.0 开始,索引筛选器会使用之前使用 从 MongoDB 8.0开始,使用查询设置而不是添加索引筛选器。 从 MongoDB 8.0开始,索引筛选器已弃用。 查询设置的功能比索引筛选器更多。 此外,索引筛选器不是持久性的,您无法轻松地为所有集群节点创建索引筛选器。 要添加查询设置并探索示例,请参阅 | ||||||||||
comment | any | 可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:
注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。 |
必需的访问权限
用户必须具有包括planCacheIndexFilter
操作的访问权限。
示例
清除collection上的特定索引筛选器
orders
collection 包含以下索引筛选器:
{ "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" } } )
由于query
谓词中的值对于确定计划缓存查询结构无关紧要,因此以下命令也会删除第二个索引过滤:
db.runCommand( { planCacheClearFilters: "orders", query: { "status" : "P" } } )
清除collection上的所有索引筛选器
以下示例清除orders
collection上的所有索引筛选器:
db.runCommand( { planCacheClearFilters: "orders" } )
清除包含查询和排序规则的索引筛选器
以下示例清除包含对Movie
en_US
orders
和collection的 排序规则的查询的索引筛选器:
db.runCommand( { planCacheClearFilters: "orders", query: { item: "Movie" }, collation: { locale: "en_US" } } )