MongoDB涵盖了嵌入式文档的查询

时间:2016-09-09 18:50:56

标签: mongodb

我正在学习MongoDB中的索引

我的示例架构是:

  1. 名称
  2. 位置
  3. 我在namelocation.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被排除在一起。涵盖的查询不适用于嵌入式文档?

2 个答案:

答案 0 :(得分:2)

不,他们不是。它是very well documented restriction

  

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

答案 1 :(得分:0)

Alex Blex答案上引用的文字不再显示在链接的站点中。我仍然不使用自己管理的数据进行自己的研究,但我认为现在有可能实现。

根据新文档:

  

在3.6版中进行了更改:索引可以涵盖对以下字段的查询   嵌入式文档。

3.6版在released于2017年11月发布,因此绝对是OP制作之日的新功能。

有关更多示例,请参见the docs