Mongodb:不使用索引的多_id聚合组

时间:2016-02-19 04:52:30

标签: mongodb indexing pymongo aggregation-framework

我的集合上有一些索引如下:

   (u'cdr3_len',1.0),
   (u'v_gene.fam', 1.0),
   (u'v_gene.gene', 1.0),
   (u'd_gene.fam', 1.0),
   (u'd_gene.gene', 1.0),
   (u'j_gene.gene', 1.0),
   (u'isotype', 1.0)

当我做一些简单的查询时 -

db.coll.find({'cdr3_len':20,'v_gene.fam':'IGHV3',
          'd_gene.fam':'IGHD3',
          'j_gene.full':'IGHJ6*03'},
          limit=100).explain()['queryPlanner']['winningPlan']

它告诉我我正在使用IXSCAN。但是,当我在聚合管道中执行多个_id组时:

pipeline = [{$group:
                {_id:{'cdr3_len':$cdr3_len,
                       'v_gene.fam':$v_gene.fam,
                       'd_gene.gene':$d_gene.gene,
                       'j_gene.full':$j_gene.full},
                 "count":{$sum:1}}}]

并运行说明,它告诉我我正在做一个完整的COLLSCAN。我不遵循为什么find的查询使用索引,以及聚合管道为什么要执行COLLSCAN。对于必须使用COLLSCAN的多id组语句,是否存在内在的东西?

由于

0 个答案:

没有答案