跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • MongoDB Aggregation Pipeline 并没有使用索引
未分類
1 6 月 2020

MongoDB Aggregation Pipeline 并没有使用索引

MongoDB Aggregation Pipeline 并没有使用索引

資深大佬 : JasonLaw 0

我有一个拥有五百万个文档的集合,文档的结构如下:

{     "_id" : ObjectId("5ed23bd292845eaf1e488965"),     "categoryId" : 18790,     "targetType" : 43,     "targetId" : 433,     "priority" : 0 } 

集合拥有索引categoryId_1_priority_-1。

我期望如下的 Aggregation Pipeline 使用到索引,但是事实上并没有。

db.collection.aggregate([{$facet: {"category_1_order_by_priority_limit_2": [{$match: {categoryId: 1}}, {$sort: {priority: -1}}, {$limit: 2}],"category_2_order_by_priority_limit_3": [{$match: {categoryId: 2}}, {$sort: {priority: -1}}, {$limit: 3}]}}]) 

explain 的结果如下:

{     "stages" : [         {             "$cursor" : {                 "query" : {                  },                 "queryPlanner" : {                     "plannerVersion" : 1,                     "namespace" : "test.collection",                     "indexFilterSet" : false,                     "parsedQuery" : {                      },                     "queryHash" : "8B3D4AB8",                     "planCacheKey" : "8B3D4AB8",                     "winningPlan" : {                         "stage" : "COLLSCAN",                         "direction" : "forward"                     },                     "rejectedPlans" : [ ]                 }             }         },         {             "$facet" : {                 ...             }         }     ],     "serverInfo" : {         ...     },     "ok" : 1 } 

我应该怎么做才能使用到索引呢?

indexing – MongoDB Aggregation Pipeline $match $sort doesn’t use index – Stack Overflow

大佬有話說 (2)

  • 主 資深大佬 : JasonLaw

    From [[SERVER-30474] leading $facet with each facet beginning with $match should add $match before $facet – MongoDB]( https://jira.mongodb.org/browse/SERVER-30474), *$facet is not smart enough to use an index. if the only stage in a pipeline is $facet, the planning system will simply default to a COLLSCAN.*

  • 主 資深大佬 : JasonLaw

    ?我有一点疑问,这个问题已经有答案了(见附言),为什么还有人收藏呢?

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具