基于嵌入式文档的MongoDB覆盖查询

基于嵌入式文档的MongoDB覆盖查询,mongodb,Mongodb,我正在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('exec

我正在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')
我收到了一封信,但当我打字时

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与第一个查询中的相同。包含的查询不适用于嵌入文档

不,他们不是。它是:

如果查询谓词中或投影中返回的任何索引字段都是嵌入文档中的字段,则索引无法覆盖查询

答案中引用的文本不再出现在链接站点中。我仍然没有用我用它管理的数据做我自己的研究,但我认为这现在是可能的

根据新文件:

在版本3.6中更改:索引可以覆盖对中字段的查询 嵌入式文档

版本3.6于2017年11月发布,因此绝对是OP发布日期的新功能


有关更多示例,请参见。

从MongoDB 3.6开始,子文档字段可以包含在覆盖索引中。在版本3.6中进行了更改:索引可以覆盖对嵌入文档中字段的查询。