You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带$sort与$limit的MongoDB聚合查询是否需内存排序?

问题解答

这个查询需要执行内存排序,原因如下:

  • MongoDB聚合中的$sort要利用索引,前提是排序字段的索引能直接作用于排序阶段的输入数据。
  • 当前查询里,$match阶段使用的age和city字段不在已创建的last_logged_in: -1索引中,所以$match需要先扫描全集合(或非目标索引)筛选出符合条件的文档,这些文档会被加载到内存中。
  • 后续的$sort阶段只能基于内存中的筛选结果进行排序,无法直接复用last_logged_in索引的有序性——因为索引里的文档并没有经过$match的过滤,没法直接取出符合age>18且city在指定列表的有序文档。
  • 虽然最后有$limit,但它是在$sort之后执行的,不影响排序阶段是否需要内存排序的判断。

内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 23:59:50