我正在学习MongoDB中的索引
我的示例架构是:
我在name
和location.number
上创建了两个索引。
当我输入
db.table.find({ 'name': 'Steve' }, { _id: 0, 'name': 1 }).explain('executionStats')
我得到了覆盖查询,但是当我输入
时db.table.find({ 'location.number': 46 }, { _id: 0, 'location.number': 1 }).explain('executionStats')
totalDocsExamined
不等于0,因此它不是覆盖查询。为什么?该查询仅包含一个字段,该字段与第一个查询中的_id
被排除在一起。涵盖的查询不适用于嵌入式文档?
答案 0 :(得分:2)
不,他们不是。它是very well documented restriction:
如果查询谓词中的任何索引字段或投影中返回的任何索引字段是嵌入文档中的字段,则索引无法覆盖查询。
答案 1 :(得分:0)