首页 > 解决方案 > MongoDB 排序检查索引列上的太多记录

问题描述

在使用 mongodb 排序功能时,我注意到它检查了太多记录,但如果我不使用排序,它只会检查 22 个文档并返回它们。

我正在尝试吸引以 DESC 顺序购买某些产品的用户。

products.userIDs和都orderTime被索引

db.collection.find({$or:[{'products.userIDs':{$in:usersArray}} , {'item.userIDs':{$in:usersArray}}]})
.sort({orderTime:-1})
.explain();

没有排序它检查的文档是 22 排序文档检查的是 1602

如何在不检查太多文档的情况下对文档进行排序。

标签: mongodbsorting

解决方案


Mongo 每个查询只使用一个索引(除非有一个$or)。如果您希望对该特定查询进行良好索引,则需要在{"products.userIDS": 1, "orderTime": 1}. 这样,当它找到文档时,它们已经被排序并且不需要在内存中进行。复合索引文档有更多详细信息。


推荐阅读