关于mongodb的基本概念问题。预先感谢您的帮助。
如果我使用非主键索引在mongodb中有一个复合索引,并且我运行一个查询,为什么在理论上仍然需要对返回结果进行排序,索引本身不应该扫描已排序的文档订购? 以下是我想要了解的一个简单示例:
文档如下所示:
{"_id":123,
"firstName":"John",
"lastName":"Doe",
"email":"email@email.com"}
如果这是索引:
db.getCollection('people').createIndex({
"email": "email@email.com"
"lastName": 1,
"firstName": 1
})
如果我想通过电子邮件返回文档列表,按lastName排序,为什么.sort({...})仍然需要按姓氏排序? :
db.getCollection('people').find({"email":"email@email.com"})
.sort({"lastName":1 })
感谢您的帮助,
答案 0 :(得分:0)
该指数并未覆盖"查询,所以MongoDB仍然需要单独读取匹配的文档。而且由于您没有指定排序顺序,MongoDB可以自由阅读并以其认为最简单/最有效的顺序返回文档,这可能是文档存储在磁盘上的顺序。