首页 > 解决方案 > 为什么更改排序顺序会影响使用的索引?

问题描述

我有一个包含 2 个字段的 Mongo 集合,都是日期。我还有以下索引:

{date1: 1}
{date2: 1}

如果我执行以下查询,它会很快并按date2预期使用索引向后执行 IXSCAN:

db.getCollection('foo').find({ date1: { '$gte': new Date() } }).sort({date2:-1}).limit(50)

但是,如果我颠倒排序顺序,查询会变得非常慢,而是使用date1索引,然后find对查询部分的结果进行排序。

我还尝试添加一个{date1: 1, date2:1}我希望用于获取和排序的索引,但这没有区别。

为什么是这样?我希望它使用索引来date2首先以相同的方式进行限制,而不管排序顺序如何,我也希望使用复合索引。

标签: mongodbmongodb-indexes

解决方案


推荐阅读