MongoDB覆盖查询的奇怪行为

时间:2016-02-06 09:57:28

标签: mongodb

如果我有以下收藏

{ "_id" : "a" }
{ "_id" : "b" }
{ "_id" : "c" }

正常查询

如果我现在运行以下查询

db.test.find({_id: "a"}, {_id: 1}).explain("executionStats")

返回

"executionStats" : {
    "totalKeysExamined" : 1,
    "totalDocsExamined" : 1
}

使用提示

查询

现在为了奇怪的部分。如果我运行以下查询

db.test.find({_id: "a"}, {_id: 1}).hint({_id: 1}).explain("executionStats")

返回

"executionStats" : {
    "totalKeysExamined" : 1,
    "totalDocsExamined" : 0
}

问题

为什么普通查询检查文档,即使我只想要_id?

服务器版本:v3.2.1

1 个答案:

答案 0 :(得分:0)

您正在做的是您通常使用_id索引而不是通过集合。您可以使用

查看索引
collection.getIndexes()

从这个意义上讲,mongo服务器(查询优化器)使用了指定的索引(_id),而不必通过集合

跳跃帮助