mongodb - 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
如何在不检查太多文档的情况下对文档进行排序。
解决方案
Mongo 每个查询只使用一个索引(除非有一个$or
)。如果您希望对该特定查询进行良好索引,则需要在{"products.userIDS": 1, "orderTime": 1}
. 这样,当它找到文档时,它们已经被排序并且不需要在内存中进行。复合索引文档有更多详细信息。
推荐阅读
- reactjs - Expo无法从资产文件夹加载任何图像
- python - 如何使用 subplot 绘制 nrows=12,ncols=2
- r - 无法以 CSV 格式从 Rstudo 导出到 Excel。我究竟做错了什么?下面的错误信息:
- arduino - 如何在 Arduino nano IoT 上在 Wifi 和 BLE 之间切换?
- amazon-sqs - 通过 asin 从 AnyOfferChangedNotification 获取产品 sku
- javascript - 如何更改 C3Chart 工具提示背景颜色?
- vue.js - Vue js表格动作按钮不显示
- angular - 如何在这样的自定义场景中以角度调用http post?
- mysql - 无法将 OKE Kubernetes 集群连接到集群外部的 Oracle MySQL 数据库实例
- html - bootstrap 4.6 按钮是否应该在活动时具有嵌入阴影?