MongoDB 查询计划缓存命令

一、MongoDB planCacheClear 命令

planCacheClear 命令用于删除集合的缓存查询计划。它声明查询形状以删除该形状的缓存查询计划。

语法:

db.runCommand(  
{  
   planCacheClear: <collection name>,  
   query: <query here>,  
   sort: <sorting algo>,  
   projection: <projection>  
} 

命令字段:

字段名 类型 描述
query document 它包含形状查询的前缀。
projection document 它包含与查询形状关联的投影详细信息。
sort document 它包含与查询形状关联的排序详细信息。

示例:

我们有以下查询形状:

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

以下代码为planCacheClear 的查询计划:

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
string 它声明了集合的名称。
query document 它包含与要删除的过滤器关联的查询谓词。
sort document 它包含与要删除的过滤器关联的排序标准。
projection document 它包含与要删除的过滤器关联的投影详细信息。

示例:

图书集合包含以下两个过滤器:

{  
  "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 命令

palncacheListFilters 命令列出与集合的查询形状关联的索引过滤器。

语法:

db.runCommand( { planCacheListFilters: <collection> } )  

命令字段:

字段名 类型 描述
planCacheListFilters string 它声明了集合的名称

示例:

{  
   "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 string 该字段声明了集合的名称。
query document 它包含与索引过滤器关联的查询谓词。
sort document 它包含与过滤器关联的排序详细信息。
projection document 它包含与过滤器关联的投影。
indexes1 array 它包含指定查询形状的索引数组。

示例:

该示例在书籍集合上创建一个索引过滤器,以便对于仅包含购买字段上的相等匹配的查询而没有任何投影和排序。

db.runCommand(  
   {  
      planCacheSetFilter: "books",  
      query: { purchase: "MongoDB" },  
      indexes: [  
         { stud_id: 123, purchase: 2 },  
         { purchage: 5, order_date: 01102020 }  
      ]  
   }  
)  

热门文章

优秀文章