database - 如何使用等于和按日期 ASC 和 DESC 排序为 mongoDB 创建有效索引
问题描述
在我的数据库中,我想创建一些索引来帮助我更快地搜索如下内容:
db.getCollection('mycoll').find( {product: {$eq: "bread"}}).sort({date: 1})
db.getCollection('mycoll').find( {product: {$eq: "bread"}}).sort({date: -1})
在我阅读的文档中:
例如,索引键模式 { a: 1, b: -1 } 可以支持对 { a: 1, b: -1 } 和 { a: -1, b: 1 } 的排序,但不支持对 { a: - 1, b: -1 } 或 {a: 1, b: 1}。
但我只想对一个字段-日期进行排序。如何为此创建最佳索引?
解决方案
https://docs.mongodb.com/manual/tutorial/sort-results-with-indexes/#sort-and-index-prefix内容如下:
如果排序键对应索引键或索引前缀,MongoDB 可以使用索引对查询结果进行排序。复合索引的前缀是由索引键模式开始处的一个或多个键组成的子集。
索引{date:1, product:1}
将支持这两个查询。
推荐阅读
- python - 为什么程序只运行一次
- swift - 通过 @Published var 上的 didSet 将日期/时间保存到 UserDefaults(来自 SwiftUI 的 TimePicker 组件)
- laravel - 将 2Checkout 与 Laravel 集成
- java - 画布上的模糊位图
- javascript - 登陆身份验证页面时如何获取已填写的电子邮件输入
- matlab - 在 Matlab 中访问 parsim 数据
- node.js - 为什么部署成功后无法访问我的天蓝色网站
- indexing - 根据另一个列表的索引替换列表中的元素
- python - 绘制来自 pandas 的时间序列数据会导致 ValueError
- docker - Kubernetes 容器端口设置类似于 docker-compose?