有人可以帮我理解mongoDB索引

时间:2016-01-23 00:03:27

标签: mongodb database

目前,我正在学习mongo并正在阅读索引。我成功地为“eyeColor”创建了一个索引,当我运行这个db.users.find({"eyeColor":{$ne: "brown"}}).explain("executionStats")时,我收到了以下内容:

"executionStats" : {
        "executionSuccess" : true,
        "nReturned" : 7,
        "executionTimeMillis" : 0,
        "totalKeysExamined" : 8,
        "totalDocsExamined" : 7,
        ...

当我运行此db.users.find({"eyeColor":"brown"}).explain("executionStats")时,我收到了以下内容:

"executionStats" : {
        "executionSuccess" : true,
        "nReturned" : 1,
        "executionTimeMillis" : 0,
        "totalKeysExamined" : 1,
        "totalDocsExamined" : 1,
        ...

我的收藏中有8条记录。据我了解,当我创建应该减少检查的文档总数的索引时,当我使用$ne运行搜索时,它似乎已经扫描了所有文档。我不确定我是怎么理解的。

1 个答案:

答案 0 :(得分:1)

正如the docs中所述,$ne的选择性较低,因此您所看到的是预期的。查询需要检查所有8个eyeColor密钥,确定有7个密钥的值不是'brown',然后读取这7个文档。