让我们说我有这样的文档集合,其中有一个包含一系列嵌入文档的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
}
它执行了整个收集扫描并且没有使用索引。我能以某种方式加速对子文档数组的不同查询吗?
由于
答案 0 :(得分:0)
我有同样的问题,只是发帖告诉你,自3.2以来你可以使用explain来获得有关执行的更多细节:
db.items.explain().distinct('stock.size');
我测试了我的索引,它实际上在过滤时工作,但在使用distinct()时却没有。希望很快就会:/