以下关于范围过滤器和排序以及 predicate 必须放置的方式的语句令人困惑。
MongoDB无法对范围过滤器的结果进行索引排序。将范围过滤器放在排序 predicate 之后,这样MongoDB就可以使用非阻塞索引排序。
我们如何在下面这样的mongo查询中的排序 predicate 之后放置一个过滤器db.collectionName.find({}).sort(sortField:1);
https://www.mongodb.com/docs/upcoming/tutorial/equality-sort-range-rule/#range
2条答案
按热度按时间zqdjd7g91#
我想你可能误解了“安置”指的是什么。
ESR指南是关于如何定义索引本身,特别是应该以什么顺序列出键。它与重新排列查询本身中的任何内容无关。事实上,你不能做这样的事情
相反,您的查询可能看起来像这样:
因此,您可以将索引创建为:
这与创建字段反转的索引相反,例如
.createIndex({rangeCondition:1, sortField:1 })
。还要注意,这只是提供了一般性指导,并不适用于所有情况。如果您的范围 predicate 具有足够的选择性,那么您可以通过使用索引引导该字段来获得更好的结果。
3htmauhk2#
您可以使用聚合框架: