嵌入式文档数组中的MongoDB不同,不使用索引

时间:2016-04-24 15:41:00

标签: mongodb indexing

让我们说我有这样的文档集合,其中有一个包含一系列嵌入文档的stock字段:

{
  _id: 1,
  item: "abc",
  stock: [
      { size: "S", color: "red", quantity: 25 },
      { size: "S", color: "blue", quantity: 10 },
      { size: "M", color: "blue", quantity: 50 }
  ]
}

我创建了一个这样的多键索引:

db.items.createIndex("stock.size")

但是当我跑步时:

db.runCommand({distinct: "items", key: "stock.size"})

它返回:

{
    "values" : [
        "S", "M"
    ],
    "stats" : {
        "n" : 1730969,
        "nscanned" : 0,
        "nscannedObjects" : 1730969,
        "timems" : 13716,
        "planSummary" : "COLLSCAN"
    },
    "ok" : 1
}

它执行了整个收集扫描并且没有使用索引。我能以某种方式加速对子文档数组的不同查询吗?

由于

1 个答案:

答案 0 :(得分:0)

我有同样的问题,只是发帖告诉你,自3.2以来你可以使用explain来获得有关执行的更多细节:

db.items.explain().distinct('stock.size');

我测试了我的索引,它实际上在过滤时工作,但在使用distinct()时却没有。希望很快就会:/