Mongodb查询分析器

  • 动态相关项目中涉及到数据量大和吞吐量的接口,例如关注页面动态,附近动态,这部分数据都是存储在mongodb中,在线上数据中分类两个mongodb集合存储
  • 其中关注动态基于扩散写的设计,数据量已经快到 8 亿。
  • 附近动态并没有写扩散的数据扩大,并且曝光量相比关注页面少一点,并且重要的是有TTL,因此附近动态相关的表数据50万以上

  • 在大数据量查询下,优化查询速度是提高系统性能的一个关键点,在Mysql中我们有explan 诊断工具,来帮助我们来对sql进行分析,同样的Mongodb中获取查询相关信息的诊断工具之一就是explain() 函数,在《MongoDB权威指南》(我只看了索引这一章)书中解释:
explain会返回查询使用的索引情况(如果有的话),耗时及扫描文档数的统计信息。.....使用explain就会得到当前查询所使用的索引,消耗了多少时间,已经数据库需要扫描多少文档才能得到结果。
  • 但是书中使用的Mongodb应该是3.2 版本之前的,因为给出的索引分析案例是如下:
{"cursor" : "BtreeCursor gender_1_user_name_1","isMultiKey" : false,"n" : 1,"nscannedObjects" : 0,"nscanned" : 1,"nscannedObjectsAllPlans" : 0,"nscannedAllPlans" : 1,"scanAndOrder" : false,"indexOnly" : true,"nYields" : 0,"nChunkSkips" : 0,"millis" : 0,"indexBounds" : {"gender" : [["M","M"]],"user_name" : [[{"$minElement" : 1},{"$maxElement" : 1}]]}
}
  • 我们在自己数据库中得到完全不一样的输出:
//db.moment.explain(executionStats).find({"subscriberID" :  NumberLong(1884831336), "type" : { "$in" : [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] } }).sort({"auditTime" : -1});
{"queryPlanner": {"mongosPlannerVersion": 1,"winningPlan": {"stage": "SINGLE_SHARD","shards": [{"shardName": "cmgo-hgz5ixhj_0","connectionString": "cmgo-hgz5ixhj_0/100.120.151.75:7004,100.120.152.197:7000,100.93.47.81:7016","serverInfo": {"host": "TENCENT64.site","port": 7016,"version": "3.2.10-cmongo-","gitVersion": "nogitversion"},"plannerVersion": 1,"namespace": "moment.moment","indexFilterSet": false,"parsedQuery": {"$and": [{"subscriberID": {"$eq": NumberLong(1884831336)}},{"type": {"$in": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]}}]},"winningPlan": {"stage": "SORT","sortPattern": {"auditTime": -1},"inputStage": {"stage": "SORT_KEY_GENERATOR","inputStage": {"stage": "FETCH","filter": {"type": {"$in": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]}},"inputStage": {"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"momentID": 1},"indexName": "idx_objectid_momentid","isMultiKey": false,"isUnique": true,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "forward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"momentID": ["[MinKey, MaxKey]"]}}}}},"rejectedPlans": [{"stage": "FETCH","inputStage": {"stage": "SORT_MERGE","sortPattern": {"auditTime": -1},"inputStages": [{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[19.0, 19.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[18.0, 18.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[17.0, 17.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[16.0, 16.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[15.0, 15.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[14.0, 14.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[13.0, 13.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[12.0, 12.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[11.0, 11.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[10.0, 10.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[8.0, 8.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[7.0, 7.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[6.0, 6.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[5.0, 5.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[4.0, 4.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[3.0, 3.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[2.0, 2.0]"],"auditTime": ["[MaxKey, MinKey]"]}},{"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"type": 1,"auditTime": 1},"indexName": "subscriberID_1_type_1_auditTime_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "backward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"type": ["[1.0, 1.0]"],"auditTime": ["[MaxKey, MinKey]"]}}]}},{"stage": "SORT","sortPattern": {"auditTime": -1},"inputStage": {"stage": "SORT_KEY_GENERATOR","inputStage": {"stage": "FETCH","inputStage": {"stage": "IXSCAN","keyPattern": {"subscriberID": 1,"unread": 1,"type": 1},"indexName": "subscriberID_1_unread_1_type_1","isMultiKey": false,"isUnique": false,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "forward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"unread": ["[MinKey, MaxKey]"],"type": ["[1.0, 1.0]", "[2.0, 2.0]", "[3.0, 3.0]", "[4.0, 4.0]", "[5.0, 5.0]", "[6.0, 6.0]", "[7.0, 7.0]", "[8.0, 8.0]", "[10.0, 10.0]", "[11.0, 11.0]", "[12.0, 12.0]", "[13.0, 13.0]", "[14.0, 14.0]", "[15.0, 15.0]", "[16.0, 16.0]", "[17.0, 17.0]", "[18.0, 18.0]", "[19.0, 19.0]"]}}}}}]}]}},"executionStats": {"nReturned": 71,"executionTimeMillis": 4,"totalKeysExamined": 71,"totalDocsExamined": 71,"executionStages": {"stage": "SINGLE_SHARD","nReturned": 71,"executionTimeMillis": 4,"totalKeysExamined": 71,"totalDocsExamined": 71,"totalChildMillis": NumberLong(2),"shards": [{"shardName": "cmgo-hgz5ixhj_0","executionSuccess": true,"executionStages": {"stage": "SORT","nReturned": 71,"executionTimeMillisEstimate": 0,"works": 146,"advanced": 71,"needTime": 73,"needYield": 0,"saveState": 3,"restoreState": 3,"isEOF": 1,"invalidates": 0,"sortPattern": {"auditTime": -1},"memUsage": 13682,"memLimit": 33554432,"inputStage": {"stage": "SORT_KEY_GENERATOR","nReturned": 0,"executionTimeMillisEstimate": 0,"works": 73,"advanced": 0,"needTime": 1,"needYield": 0,"saveState": 3,"restoreState": 3,"isEOF": 1,"invalidates": 0,"inputStage": {"stage": "FETCH","filter": {"type": {"$in": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]}},"nReturned": 71,"executionTimeMillisEstimate": 0,"works": 72,"advanced": 71,"needTime": 0,"needYield": 0,"saveState": 3,"restoreState": 3,"isEOF": 1,"invalidates": 0,"docsExamined": 71,"alreadyHasObj": 0,"inputStage": {"stage": "IXSCAN","nReturned": 71,"executionTimeMillisEstimate": 0,"works": 72,"advanced": 71,"needTime": 0,"needYield": 0,"saveState": 3,"restoreState": 3,"isEOF": 1,"invalidates": 0,"keyPattern": {"subscriberID": 1,"momentID": 1},"indexName": "idx_objectid_momentid","isMultiKey": false,"isUnique": true,"isSparse": false,"isPartial": false,"indexVersion": 1,"direction": "forward","indexBounds": {"subscriberID": ["[1884831336, 1884831336]"],"momentID": ["[MinKey, MaxKey]"]},"keysExamined": 71,"dupsTested": 0,"dupsDropped": 0,"seenInvalidated": 0}}}}}]}},"ok": 1
}
  • 我看到我们测试库的版本是:3.4.21,既然和书上不一样,去官网看看吧,反正书上也是官网的翻译,Mongodb中explain()函数的网址,中文的Mongodb中explain() 网址

  • 如上官网中发现,在3.2版本后新支持了一部分函数的分析,并且在预发规则上也有一点变化

//之前
db.collection.<method(...)>.explain()//现在
db.collection.explain().<method(...)>
  • 并且在explain()函数中还支持参数选择各种模式的分析方式,如下:

  • 分为三种模式

    • queryPlanner(默认模式)
    • executionStats:返回关于查询过程中统计信息,包括使用的随意,扫描的文档数已经查查处理所用时间(毫秒计算)
    • allPlansExecution:查看计划选择期间收集的部分执行统计信息。
  • 我们主要用的是excutionStats模式来进行分析,如上最长的那个explain返回的json为例:

  • 对queryPlanner分析

    • queryPlanner : 标识queryPlanner的返回
    • queryPlanner.namespace:该值返回的是该query所查询的表
    • queryPlanner.indexFilterSet:针对该query是否有indexfilter
    • queryPlanner.winningPlan:查询优化器针对该query所返回的最优执行计划的详细内容。
    • queryPlanner.winningPlan.stage:最优执行计划的stage,这里返回是SORT,可以理解为通过返回的index位置去检索具体的文档,并且在内存中进行了排序(stage有多个模式,将在后文中进行解释)。
    • queryPlanner.winningPlan.inputStage:用来描述子stage,并且为其父stage提供文档和索引关键字。
    • queryPlanner.winningPlan.inputStage.stage: 此处是SORT_KEY_GENERATOR,这个在官网上找了好久只找到一个issues,最后在stackoverflow上找到了我需要的答案,最关键的一句话: means in-memory sorting,在内存中排序的
    • queryPlanner.winningPlan.keyPattern:所扫描的index内容,此处是"subscriberID" : 1,“momentID” : 1
    • queryPlanner.winningPlan.indexName:winning plan所选用的index。这里选用的idx_objectid_momentid 索引
    • queryPlanner.winningPlan.isMultiKey是否是Multikey,此处返回是false,如果索引建立在array上,此处将是true。
    • queryPlanner.winningPlan.direction:此query的查询顺序,此处是forward,如果查询顺序与设置顺序相反则必然是backward,此部分以下会用案例解释。
    • queryPlanner.winningPlan.indexBounds:winningplan所扫描的索引范围,如果没有制定范围就是[MaxKey, MinKey],这主要是直接定位到mongodb的chunck中去查找数据,加快数据读取。(chunk是指一个集合数据中的子集,在分片的时候,每个分区就是一个chunck)
    • queryPlanner.rejectedPlans:其他执行计划(非最优而被查询优化器reject的)的详细返回,其中具体信息与winningPlan的返回中意义相同
  • 对executionStats中时间分析

    • executionTimeMillis : 指我们预计的执行时间,越小越好,其中有三个这个时间数据,分别如下:

      • 第一层, executionStats.executionTimeMillis: 该query的整体查询时间。
      • 第二层,executionStats.executionStages.executionTimeMillisEstimate: 该查询根据index去检索document获得71条数据的时间。
      • 第三层,executionStats.executionStages.inputStage.executionTimeMillisEstimate:此处没有,该查询扫描71行index所用时间。
  • 对executionStats中扫描数量的分析

    • nReturned、totalKeysExamined、totalDocsExamined,分别代表查询返回条数,索引扫描条数,文档扫描条数,这些都是直观地影响到executionTimeMillis,我们需要扫描的越少速度越快。
    • 对应一个查询,理想状态下是 nReturned=totalKeysExamined=totalDocsExamined,也就是我们需要的数据都在索引数据文档中找到了
  • 对stage状态分析

    • stage的类型会影响totalKeysExamined和totalDocsExamined的最终扫描值
    • COLLSCAN:全表扫描
    • IXSCAN:索引扫描
    • FETCH:根据索引去检索指定document
    • SHARD_MERGE:将各个分片返回数据进行merge
    • SORT:表明在内存中进行了排序
    • SORT_KEY_GENERATOR : 表名在内存中排序
    • LIMIT:使用limit限制返回数
    • SKIP:使用skip进行跳过
    • IDHACK:针对_id进行查询
    • SHARDING_FILTER:通过mongos对分片数据进行查询
    • COUNT:利用db.coll.explain().count()之类进行count运算
    • COUNTSCAN:count不使用Index进行count时的stage返回
    • COUNT_SCAN:count使用了Index进行count时的stage返回
    • SUBPLA:未使用到索引的$or查询的stage返回
    • TEXT:使用全文索引进行查询时候的stage返回
    • PROJECTION:限定返回字段时候stage的返回
    • SINGLE_SHARD: 查询落到单个分片上查询
  • 我们生产中期望得到的是:

    • Fetch+IDHACK
    • Fetch+IXSCAN
    • Limit+(Fetch+IXSCAN)
    • PROJECTION+IXSCAN
    • SINGLE_SHARD+IXSCAN
    • COUNT_SCAN
  • 不希望看到的:

    • COLLSCAN,全表
    • SORT,使用排序但是没有命中索引,内存排序
    • 不要用SKIP去做跳过操作
    • SUBPLA,没有用到索引的or命令
    • COUNTSCAN,没有用到索引的count
  • 关于上面direction是backward的原因,有必要说明:

  • 我们在没有设置排序字段时候,因为走的索引是idx_objectid_momentid :{“subscriberID” : 1,“momentID” : 1},两个字段索引都是顺序创建的。如下在默认无指定排序情况下,momentID是顺序排列的。

  • 如果我们强制这条语句走 subscriberID_1_type_1_auditTime_1 索引,那么他肯定是backround,因为你查询的顺序和你索引创建的顺序正好是相反的:

//db.moment.explain("executionStats").find({"subscriberID" :  NumberLong(1884831336), "type" : { "$in" : [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] } }).sort({"auditTime": -1}).hint({"subscriberID" : 1,"type" : 1,"auditTime" : 1});
{"queryPlanner" : {"mongosPlannerVersion" : 1,"winningPlan" : {"stage" : "SINGLE_SHARD","shards" : [{"shardName" : "cmgo-hgz5ixhj_0","connectionString" : "cmgo-hgz5ixhj_0/100.120.151.75:7004,100.120.152.197:7000,100.93.47.81:7016","serverInfo" : {"host" : "TENCENT64.site","port" : 7016,"version" : "3.2.10-cmongo-","gitVersion" : "nogitversion"},"plannerVersion" : 1,"namespace" : "moment.moment","indexFilterSet" : false,"parsedQuery" : {"$and" : [{"subscriberID" : {"$eq" : NumberLong(1884831336)}},{"type" : {"$in" : [1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19]}}]},"winningPlan" : {"stage" : "FETCH","inputStage" : {"stage" : "SORT_MERGE","sortPattern" : {"auditTime" : -1},"inputStages" : [{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[19.0, 19.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[18.0, 18.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[17.0, 17.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[16.0, 16.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[15.0, 15.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[14.0, 14.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[13.0, 13.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[12.0, 12.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[11.0, 11.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[10.0, 10.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[8.0, 8.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[7.0, 7.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[6.0, 6.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[5.0, 5.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[4.0, 4.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[3.0, 3.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[2.0, 2.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[1.0, 1.0]"],"auditTime" : ["[MaxKey, MinKey]"]}}]}},"rejectedPlans" : [ ]}]}},"executionStats" : {"nReturned" : 71,"executionTimeMillis" : 3,"totalKeysExamined" : 71,"totalDocsExamined" : 71,"executionStages" : {"stage" : "SINGLE_SHARD","nReturned" : 71,"executionTimeMillis" : 3,"totalKeysExamined" : 71,"totalDocsExamined" : 71,"totalChildMillis" : NumberLong(1),"shards" : [{"shardName" : "cmgo-hgz5ixhj_0","executionSuccess" : true,"executionStages" : {"stage" : "FETCH","nReturned" : 71,"executionTimeMillisEstimate" : 0,"works" : 161,"advanced" : 71,"needTime" : 89,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"docsExamined" : 71,"alreadyHasObj" : 0,"inputStage" : {"stage" : "SORT_MERGE","nReturned" : 71,"executionTimeMillisEstimate" : 0,"works" : 160,"advanced" : 71,"needTime" : 89,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"sortPattern" : {"auditTime" : -1},"dupsTested" : 71,"dupsDropped" : 0,"inputStages" : [{"stage" : "IXSCAN","nReturned" : 0,"executionTimeMillisEstimate" : 0,"works" : 1,"advanced" : 0,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[19.0, 19.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 0,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 0,"executionTimeMillisEstimate" : 0,"works" : 1,"advanced" : 0,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[18.0, 18.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 0,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 0,"executionTimeMillisEstimate" : 0,"works" : 1,"advanced" : 0,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[17.0, 17.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 0,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 0,"executionTimeMillisEstimate" : 0,"works" : 1,"advanced" : 0,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[16.0, 16.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 0,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 0,"executionTimeMillisEstimate" : 0,"works" : 1,"advanced" : 0,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[15.0, 15.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 0,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 0,"executionTimeMillisEstimate" : 0,"works" : 1,"advanced" : 0,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[14.0, 14.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 0,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 0,"executionTimeMillisEstimate" : 0,"works" : 1,"advanced" : 0,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[13.0, 13.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 0,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 6,"executionTimeMillisEstimate" : 0,"works" : 7,"advanced" : 6,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[12.0, 12.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 6,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 0,"executionTimeMillisEstimate" : 0,"works" : 1,"advanced" : 0,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[11.0, 11.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 0,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 0,"executionTimeMillisEstimate" : 0,"works" : 1,"advanced" : 0,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[10.0, 10.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 0,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 0,"executionTimeMillisEstimate" : 0,"works" : 1,"advanced" : 0,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[8.0, 8.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 0,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 0,"executionTimeMillisEstimate" : 0,"works" : 1,"advanced" : 0,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[7.0, 7.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 0,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 0,"executionTimeMillisEstimate" : 0,"works" : 1,"advanced" : 0,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[6.0, 6.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 0,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 3,"executionTimeMillisEstimate" : 0,"works" : 4,"advanced" : 3,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[5.0, 5.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 3,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 8,"executionTimeMillisEstimate" : 0,"works" : 9,"advanced" : 8,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[4.0, 4.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 8,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 25,"executionTimeMillisEstimate" : 0,"works" : 26,"advanced" : 25,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[3.0, 3.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 25,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 28,"executionTimeMillisEstimate" : 0,"works" : 29,"advanced" : 28,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[2.0, 2.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 28,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0},{"stage" : "IXSCAN","nReturned" : 1,"executionTimeMillisEstimate" : 0,"works" : 2,"advanced" : 1,"needTime" : 0,"needYield" : 0,"saveState" : 1,"restoreState" : 1,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 1,"direction" : "backward","indexBounds" : {"subscriberID" : ["[1884831336, 1884831336]"],"type" : ["[1.0, 1.0]"],"auditTime" : ["[MaxKey, MinKey]"]},"keysExamined" : 1,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0}]}}}]}},"ok" : 1
}
  • 以上语句也就是我们动态中用的第二多的一条语句,当关注页面查看第二页动态时候,会带上_id,这个时候我们用hint 命令强制他走了 subscriberID_1_type_1_auditTime_1 索引,此时他的查询是FETCH + SORT_MERGE,其中SORT_MERGE 也是在内存进行排序并且合并得到最好结果。

  • 以上分析起来索引应该有优化的空间,例如我建立以下索引:

db.moment.createIndex({"subscriberID" : 1,"type" : 1,"auditTime" : -1 })
  • 看起来完美契合我们的查询:
db.moment.explain("executionStats").find({ "subscriberID" : NumberLong(2000103230), "type" : { "$in" : [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] } }).sort({"auditTime": -1});
//得到的执行结果:
{"queryPlanner" : {"plannerVersion" : 1,"namespace" : "moment.moment","indexFilterSet" : false,"parsedQuery" : {"$and" : [{"subscriberID" : {"$eq" : NumberLong(2000103230)}},{"type" : {"$in" : [1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19]}}]},"winningPlan" : {"stage" : "SORT","sortPattern" : {"auditTime" : -1},"inputStage" : {"stage" : "SORT_KEY_GENERATOR","inputStage" : {"stage" : "FETCH","filter" : {"type" : {"$in" : [1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19]}},"inputStage" : {"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"unread" : 1},"indexName" : "subscriberID_1_unread_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"unread" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"unread" : ["[MinKey, MaxKey]"]}}}}},"rejectedPlans" : [{"stage" : "FETCH","inputStage" : {"stage" : "SORT_MERGE","sortPattern" : {"auditTime" : -1},"inputStages" : [{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[1.0, 1.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[2.0, 2.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[3.0, 3.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[4.0, 4.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[5.0, 5.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[6.0, 6.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[7.0, 7.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[8.0, 8.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[10.0, 10.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[11.0, 11.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[12.0, 12.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[13.0, 13.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[14.0, 14.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[15.0, 15.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[16.0, 16.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[17.0, 17.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[18.0, 18.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : -1},"indexName" : "subscriberID_1_type_1_auditTime_-1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[19.0, 19.0]"],"auditTime" : ["[MaxKey, MinKey]"]}}]}},{"stage" : "SORT","sortPattern" : {"auditTime" : -1},"inputStage" : {"stage" : "SORT_KEY_GENERATOR","inputStage" : {"stage" : "FETCH","filter" : {"type" : {"$in" : [1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19]}},"inputStage" : {"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"momentID" : 1},"indexName" : "idx_objectid_momentid","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"momentID" : [ ]},"isUnique" : true,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"momentID" : ["[MinKey, MaxKey]"]}}}}},{"stage" : "SORT","sortPattern" : {"auditTime" : -1},"inputStage" : {"stage" : "SORT_KEY_GENERATOR","inputStage" : {"stage" : "FETCH","inputStage" : {"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"unread" : 1,"type" : 1},"indexName" : "subscriberID_1_unread_1_type_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"unread" : [ ],"type" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"unread" : ["[MinKey, MaxKey]"],"type" : ["[1.0, 1.0]","[2.0, 2.0]","[3.0, 3.0]","[4.0, 4.0]","[5.0, 5.0]","[6.0, 6.0]","[7.0, 7.0]","[8.0, 8.0]","[10.0, 10.0]","[11.0, 11.0]","[12.0, 12.0]","[13.0, 13.0]","[14.0, 14.0]","[15.0, 15.0]","[16.0, 16.0]","[17.0, 17.0]","[18.0, 18.0]","[19.0, 19.0]"]}}}}},{"stage" : "FETCH","inputStage" : {"stage" : "SORT_MERGE","sortPattern" : {"auditTime" : -1},"inputStages" : [{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[19.0, 19.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[18.0, 18.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[17.0, 17.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[16.0, 16.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[15.0, 15.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[14.0, 14.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[13.0, 13.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[12.0, 12.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[11.0, 11.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[10.0, 10.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[8.0, 8.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[7.0, 7.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[6.0, 6.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[5.0, 5.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[4.0, 4.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[3.0, 3.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[2.0, 2.0]"],"auditTime" : ["[MaxKey, MinKey]"]}},{"stage" : "IXSCAN","keyPattern" : {"subscriberID" : 1,"type" : 1,"auditTime" : 1},"indexName" : "subscriberID_1_type_1_auditTime_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"type" : [ ],"auditTime" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "backward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"type" : ["[1.0, 1.0]"],"auditTime" : ["[MaxKey, MinKey]"]}}]}}]},"executionStats" : {"executionSuccess" : true,"nReturned" : 4,"executionTimeMillis" : 1,"totalKeysExamined" : 4,"totalDocsExamined" : 4,"executionStages" : {"stage" : "SORT","nReturned" : 4,"executionTimeMillisEstimate" : 0,"works" : 12,"advanced" : 4,"needTime" : 6,"needYield" : 0,"saveState" : 0,"restoreState" : 0,"isEOF" : 1,"invalidates" : 0,"sortPattern" : {"auditTime" : -1},"memUsage" : 764,"memLimit" : 33554432,"inputStage" : {"stage" : "SORT_KEY_GENERATOR","nReturned" : 4,"executionTimeMillisEstimate" : 0,"works" : 6,"advanced" : 4,"needTime" : 1,"needYield" : 0,"saveState" : 0,"restoreState" : 0,"isEOF" : 1,"invalidates" : 0,"inputStage" : {"stage" : "FETCH","filter" : {"type" : {"$in" : [1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19]}},"nReturned" : 4,"executionTimeMillisEstimate" : 0,"works" : 5,"advanced" : 4,"needTime" : 0,"needYield" : 0,"saveState" : 0,"restoreState" : 0,"isEOF" : 1,"invalidates" : 0,"docsExamined" : 4,"alreadyHasObj" : 0,"inputStage" : {"stage" : "IXSCAN","nReturned" : 4,"executionTimeMillisEstimate" : 0,"works" : 5,"advanced" : 4,"needTime" : 0,"needYield" : 0,"saveState" : 0,"restoreState" : 0,"isEOF" : 1,"invalidates" : 0,"keyPattern" : {"subscriberID" : 1,"unread" : 1},"indexName" : "subscriberID_1_unread_1","isMultiKey" : false,"multiKeyPaths" : {"subscriberID" : [ ],"unread" : [ ]},"isUnique" : false,"isSparse" : false,"isPartial" : false,"indexVersion" : 2,"direction" : "forward","indexBounds" : {"subscriberID" : ["[2000103230, 2000103230]"],"unread" : ["[MinKey, MaxKey]"]},"keysExamined" : 4,"seeks" : 1,"dupsTested" : 0,"dupsDropped" : 0,"seenInvalidated" : 0}}}}},"serverInfo" : {"host" : "mongodb-0","port" : 27017,"version" : "3.4.21","gitVersion" : "ba2e818de44c9a331ce09a624780a2bd841cf6e4"},"ok" : 1
}
  • 我们看到结果依然是 SORT + SORT_KEY_GENERATOR,意思是我们依然需要在内存中排序,原因在于当我们建立:{“subscriberID” : 1,“type” : 1,“auditTime” : -1 } 索引的时候,MongoDB会按照如下方式给我吗组织索引数据:

    • 优先按subscriberID 的顺序,
    • 然后 type顺序
    • 最后才是 auditTime 的逆序,如下案例
mongos> db.moment.find({ "subscriberID" : NumberLong(1896740278), "type" : { "$in" : [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] } });
{ "_id" : ObjectId("5fd09738fb1a7b001444e64b"), "type" : 1, "momentID" : NumberLong(257617647), "memberID" : NumberLong(1519251653), "subscriberID" : NumberLong(1896740278), "auditStatus" : 0, "unread" : true, "createTime" : ISODate("2020-12-09T09:21:59Z"),  }
{ "_id" : ObjectId("60a3a82062c4680014c7dd21"), "type" : 1, "momentID" : NumberLong(405945302), "subscriberID" : NumberLong(1896740278), "unread" : true, "auditTime" : ISODate("2021-05-18T11:42:25Z"), "createTime" : ISODate("2021-05-18T11:28:11Z"),  }
{ "_id" : ObjectId("60a65571d359c60014c6149c"), "type" : 1, "momentID" : NumberLong(406114684), "subscriberID" : NumberLong(1896740278), "unread" : true, "auditTime" : ISODate("2021-05-20T12:26:25Z"), "createTime" : ISODate("2021-05-20T12:10:39Z"),  }
{ "_id" : ObjectId("60d3000178512e001443830f"), "type" : 1, "momentID" : NumberLong(408785569), "subscriberID" : NumberLong(1896740278), "unread" : true, "auditTime" : ISODate("2021-06-23T09:33:53Z"), "createTime" : ISODate("2021-06-23T09:26:52Z"),  }
{ "_id" : ObjectId("60e6d944ccc7d000148edac2"), "type" : 1, "momentID" : NumberLong(409971805), "subscriberID" : NumberLong(1896740278), "unread" : true, "auditTime" : ISODate("2021-07-08T10:53:56Z"), "createTime" : ISODate("2021-07-08T10:45:38Z"),  }
{ "_id" : ObjectId("60eb97d3f12ad4001491f83f"), "type" : 1, "momentID" : NumberLong(410215242), "subscriberID" : NumberLong(1896740278), "unread" : true, "auditTime" : ISODate("2021-07-12T01:16:03Z"), "createTime" : ISODate("2021-07-12T01:07:27Z"),  }
{ "_id" : ObjectId("61016cc1b572ea001497550f"), "type" : 1, "momentID" : NumberLong(411549007), "subscriberID" : NumberLong(1896740278), "unread" : true, "auditTime" : ISODate("2021-07-28T14:42:09Z"), "createTime" : ISODate("2021-07-28T14:42:09Z"),  }
  • 可以看到在objectId相同的时候,他是按照momentID的顺序排列,但是auditTime的顺序只有在momentID相同的时候才是逆序,实际按索引来看他还是乱序的。因此我们在对时间排序的时候,他依然需要在内存排序。

  • 那么我们应该创建如下的索引:

db.moment.createIndex({"subscriberID" : 1,"auditTime" : -1 ,"type" : 1})
db.moment.createIndex({"type" : 1,"auditTime" : -1,"subscriberID" : 1})
  • 因为我们是分片的数据库,按照subscriberID分片,因此,这两个索引效果是一样的。但是两个都创建的话,MongoDB会给你选择第一个,排序优先

  • 在我们项目中,查询关注动态部分有两个查询语句,一条查询第一页,一条查询之后的页面数据,带有_id,占比如下:

  • 总的查询数:2,007,778

  • 第二页以及以后的查询数:584258

  • 第二页查询占比28% 左右,也就是大多其实都是在第一页查看,由此看来索引还是有优化空间的。

Mongodb查询分析器解析相关推荐

  1. 标准查询分析器:Solr的默认查询解析器也称为“Lucene”解析器。

    标准查询分析器:Solr的默认查询解析器也称为"Lucene"解析器. 标准查询解析器的主要优点是,它支持一种健壮且相当直观的语法,允许您创建各种结构化查询.最大的缺点是,与设计为 ...

  2. navicat 解析sql_使用 Navicat 查询分析器优化查询性能(第 2 部分)

    2018 年 12 月 31 日,由 Robert Gravelle 撰写 查询分析器部分 Navicat Monitor for MySQL/MariaDB的查询分析器工具提供了查询日志的图形表示, ...

  3. navicat 解析sql_使用 Navicat 查询分析器优化查询性能(第 1 部分)

    2018 年 12 月 24 日,由 Robert Gravelle 撰写 概览.最新的死锁查询以及进程列表页面 正如上几篇关于 MySQL/MariaDB 日志的文章中所提到的,数据库管理员(DBA ...

  4. mongodb 查询效率_2020年9个好用的MongoDB 图形化界面工具

    市场上有许多MongoDB管理工具.这些工具可以提高MongoDB开发和管理的效率.下面我们就列举一些2020年好用的mongo管理工具. 1)NoSQLBooster 用于MongoDB的NoSQL ...

  5. MySQL查询分析器EXPLAIN或DESC用法

    MySQL查询分析器EXPLAIN或DESC用法 一.简单例子: MySQL可以通过EXPLAIN或DESC来查看并分析SQL语句的执行情况 mysql> desc one_and_two_kn ...

  6. 数据库实验报告【学会使用企业管理器和查询分析器管理工具】

    Hello各位,本系列为数据库实验报告的合集,是我按照<数据库系统概论习题解析与实验指导第5版>中的实验指导写出来的所有报告.这个系列的每一份报告都是我滴原创于是想把自己的劳动成果发出来共 ...

  7. MongoDB数据库协议解析及C/C++代码实现

    MongoDB 是由 MongoDB Inc 开发的 NoSQL 数据库,它是无模式的.它是使用 c++ 和 javascript 设计和创建的,允许更高的连接性. MongoDB 是一个 NoSQL ...

  8. mongodb不等于某个值_MongoDb进阶实践之四 MongoDB查询命令详述

    一.引言 上一篇文章我们已经介绍了MongoDB数据库的最基本操作,包括数据库的创建.使用和删除数据库,文档的操作也涉及到了文档的创建.删除.更新和查询,当然也包括集合的创建.重命名和删除.有了这些基 ...

  9. java操作es聚合操作并显示其他字段_java使用elasticsearch分组进行聚合查询过程解析...

    这篇文章主要介绍了java使用elasticsearch分组进行聚合查询过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 java连接elas ...

最新文章

  1. [SDOI2009]晨跑
  2. Redisson分布式锁实战-2:解决wait_time之坑
  3. java输入流的控制_Java-Android-IO流-控制台输入输出
  4. 成年人的样子是什么样子_不只是看样子
  5. 交换机发生网络通信故障问题时该怎么办?
  6. 语法和c区别_dockerfile语法
  7. MFC开发-待整理 --VS调试 不会命中断点,源代码与原始版本不同的解决办法
  8. 雷军:小米10是首款支持8x8 MU-MIMO的手机
  9. ofdm误码率仿真代码_共享源代码之MSK仿真(1)
  10. mui框架 页面无法滚动解决方法
  11. 北邮机试 打牌——破除固化思维,连续与不连续
  12. Win10企业版转专业版
  13. 衡量软件交付性能的4个指标
  14. 感觉本人对事待人处理不当。
  15. 告诉你苹果手机如何录屏的同时录音
  16. 如何设置无线路由连接无线wifi
  17. 蚂蚁金服副总裁在剑桥、牛津大学说了三个词,差点掀起“中国热”
  18. [转贴]“山寨”之现状分析
  19. 全光谱防蓝光护眼灯有用吗?怎么分辨是全光谱灯
  20. 微记账软件-站立会议10

热门文章

  1. 如何在IE浏览器里面定位到关键字的位置(页面代码)和这个关键字位置模块的请求
  2. svn之bash: syntax error near unexpected token `(‘ 解决办法
  3. (八)python3 只需3小时带你轻松入门——List 与 dict 的常用操作
  4. 如何在Clion中使用C++调用Python代码
  5. mysql查看日志命令_面对成百上千台服务器产生的日志,试试这款轻量级日志搬运神器!
  6. 【完整版】当大师遇到了理工男,只能吐血了...
  7. 喜报!985大学首次登上Nature封面,这所学校可太不容易了!
  8. 收藏 | 分享 3 种脑洞大开的Excel技巧
  9. 看国外女神级程序员,直播写代码一年的感悟
  10. curd什么意思中文_每日一句英译英:She's a ten什么意思?