MongoDB, 复合索引, 排序.



关于MongoDB的基本概念问题。提前感谢您的帮助。

如果我在 mongodb 中使用非主键索引有一个复合索引,并且我运行了一个查询,为什么仍然需要对返回结果进行排序,而理论上,索引本身不应该按排序顺序扫描文档吗? 以下是我试图理解的内容的快速示例:

文档如下所示:

{"_id":123,
"firstName":"John",
"lastName":"Doe",
"email":"email@email.com"}

如果这是索引:

db.getCollection('people').createIndex({ 
"email": "email@email.com"  
"lastName": 1,
"firstName": 1
})

如果我想通过电子邮件返回按姓氏排序的文档列表,为什么 .sort ({ ... }( 仍然需要按姓氏排序?

db.getCollection('people').find({"email":"email@email.com"})
.sort({"lastName":1 }) 

谢谢你的帮助,

该索引不会"覆盖"查询,因此MongoDB仍然需要单独读取匹配的文档。而且由于您没有指定排序顺序,MongoDB可以按照它认为最简单/最有效的任何顺序自由阅读和返回文档,这可能是文档存储在磁盘上的顺序。

相关内容

  • 没有找到相关文章

最新更新