MongoDB 查询计划缓存命令
MongoDB planCacheClear命令
planCacheClear命令用于删除集合的缓存查询计划。它声明要删除该形状的缓存查询计划的查询形状。
语法:
db.runCommand(
{
planCacheClear: <collection name>,
query: <query here>,
sort: <sorting algo>,
projection: <projection>
}
)
命令字段
字段 | 类型 | 描述 |
---|---|---|
query | 文档 | 它包含了形状查询的前缀。 |
projection | 文档 | 它包含了与查询形状相关联的投影细节。 |
sort | 文档 | 它包含了与查询形状相关联的排序细节。 |
示例:
我们有以下查询形式:
{
"query" : { "qty" : { "$gt" : 10 } },
"sort" : { "ord_date" : 1 },
"projection" : { },
"queryHash" : "9AAD95BE"
}
以下代码清除了关于形状的查询计划缓存:
db.runCommand(
{
planCacheClear: "orders",
query: { "qty" : { "$gt" : 10 } },
sort: { "ord_date" : 1 }
}
)
MongoDB planCacheClearFilters 命令
planCacheClearFilters 命令用于移除集合上的索引过滤器。使用该命令还可以清除现有的索引过滤器,但索引过滤器仅在服务器进程运行期间存在,不会在关闭后持久存在。
语法:
db.runCommand(
{
planCacheClearFilters: <collection>,
query: <query pattern>,
sort: <sort specification>,
projection: <projection specification>
}
)
命令字段:
字段 | 类型 | 描述 |
---|---|---|
planCache ClearFilters | 字符串 | 声明集合的名称。 |
query | 文档 | 包含与要移除的筛选器关联的查询谓词。 |
sort | 文档 | 包含与要移除的筛选器关联的排序条件。 |
projection | 文档 | 包含与要移除的筛选器关联的投影细节。 |
示例:
书籍集合包含以下两个过滤器:
{
"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 } ]
}
下面的命令将删除第一个索引过滤器:
db.runCommand(
{
planCacheClearFilters: "orders",
query: { "status" : "A" }
}
)
MongoDB planCacheListFilters命令
planCacheListFilters命令列出集合中与查询形状相关的索引过滤器。
语法:
db.runCommand( { planCacheListFilters: <collection> } )
命令字段:
字段 | 类型 | 描述 |
---|---|---|
planCacheListFilters | 字符串 | 声明集合的名称 |
示例:
{
"filters" : [
{
"query" : <query>
"sort" : <sort>,
"projection" : <projection>,
"indexes" : [
<index1>,
...
]
},
...
],
"ok" : 1
}
MongoDB palnCacheSetFilter 命令
此命令为集合设置索引过滤器。这是为查询形状已经存在的索引过滤器。planCacheSetFilter会覆盖之前的索引过滤器。
语法:
db.runCommand(
{
planCacheSetFilter: <collection>,
query: <query>,
sort: <sort>,
projection: <projection>,
indexes: [ <index1>, <index2>, ...]
}
)
命令过滤器
字段 | 类型 | 描述 |
---|---|---|
planCacheSetFilter | 字符串 | 此字段声明集合的名称。 |
query | 文档 | 它包含与索引筛选器关联的查询谓词。 |
sort | 文档 | 它包含与筛选器关联的排序详细信息。 |
projection | 文档 | 它包含与筛选器关联的投影。 |
indexes1 | 数组 | 它包含特定查询形状的索引数组。 |
示例:
该示例在books集合上创建了一个索引过滤器,以便对仅包含对purchase字段的相等匹配的查询进行筛选,没有任何投影和排序。
db.runCommand(
{
planCacheSetFilter: "books",
query: { purchase: "MongoDB" },
indexes: [
{ stud_id: 123, purchase: 2 },
{ purchage: 5, order_date: 01102020 }
]
}
)