确保在进行$sort和$match操作时使用相同的索引键。以下是一个示例:
假设在名为'users”的集合中,有一个复合索引由'age”和'gender”组成。查询年龄在20到30之间,性别为女性的用户,并按用户名升序排序的操作代码如下:
db.users.find({ age: {$gte: 20, $lte: 30}, gender: 'female' }) .sort({ name: 1 })
以上操作将不使用复合索引,因为$match和$sort使用了不同的键。为了解决这个问题,可以简单地改变操作代码,使用相同的键:
db.users.find({ age: {$gte: 20, $lte: 30}, gender: 'female' }) .sort({ age: 1 }) .sort({ gender: 1 }) .sort({ name: 1 })
这样操作可以使用复合索引来优化查询。注意,$sort操作可以被分成多部分,每一部分都使用相同的键。