MongoDB单字段正反向排序的索引创建方法咨询
单个字段双向排序的MongoDB索引方案
核心结论
单个字段的单方向索引(不管是timestamp: 1还是timestamp: -1)就足以满足该字段的正序、倒序双向排序需求,完全不需要创建两个方向的索引,更不需要你尝试的那种重复字段的错误索引写法。
详细说明
- MongoDB的单字段索引本身支持双向遍历:
- 若创建了
{timestamp: 1}的升序索引,MongoDB可直接用该索引执行sort({timestamp: -1})的倒序排序操作,无需额外创建倒序索引。 - 同理,
{timestamp: -1}的倒序索引也能支持升序排序操作。
- 若创建了
- 你尝试的
{timestamp: -1, timestamp: 1}索引写法无效,同一个字段在索引定义中重复出现会被MongoDB忽略(最后出现的配置会覆盖前面的),实际相当于只创建了{timestamp: 1}的索引,属于冗余操作。
关于官方文档的补充
官方文档提及的复合索引场景,针对的是多字段排序需求(比如同时按timestamp和userId排序),这时候需要索引的字段顺序和排序方向匹配。但单字段排序的场景下,单方向索引就足够覆盖双向排序需求。
内容的提问来源于stack exchange,提问作者Vasu Rangpariya
相关产品推荐
相关产品推荐

