您的假设对于排序顺序的一条评论是正确的。确保您的查询排序顺序与索引排序顺序匹配,否则将不会使用索引。请在此处阅读更多详细信息。
考虑一个包含具有用户名和日期字段的文档的集合事件。应用程序可以发出查询,返回的结果首先按用户名值升序排序,然后按日期值降序(即从最近到最后)排序,例如:
db.events.find().sort( { username: 1, date: -1 } )
Run Code Online (Sandbox Code Playgroud)
或返回的结果首先按用户名值降序排序,然后按日期值升序排序的查询,例如:
db.events.find().sort( { username: -1, date: 1 } )
Run Code Online (Sandbox Code Playgroud)
以下索引可以支持这两种排序操作:
db.events.createIndex( { "username" : 1, "date" : -1 } )
Run Code Online (Sandbox Code Playgroud)
但是,上述索引不支持按用户名值升序排序,然后按日期值升序排序,如下所示:
db.events.find().sort( { username: 1, date: 1 } )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
593 次 |
| 最近记录: |