MongoDB数据库。如何在聚合中正确使用排序、搜索和限制

MongoDB. How to use sorting, search and limit in aggregation correctly

提问人:Александр Миронов 提问时间:11/7/2023 更新时间:11/7/2023 访问量:40

问:

假设我有 1000 万个文档。 我需要跳过最后 5 个文档并获取最后 10 个文档。

此代码运行速度很快

documents.find({user: 'demo'}).sort({ _id: -1 }).skip(5).limit(10)

此代码运行速度非常非常慢,并且会大量加载系统。

documents.aggregate([
  { $match: { user: 'demo' } },
  { $sort: { _id: -1 } },
  { $skip: 5 },
  { $limit: 10 },
])

如果比赛进行到最后,这将很快起作用,但结果将不正确。 帮助我弄清楚如何使用聚合正确编写查询

MongoDB 排序 聚合 限制 跳过

评论

1赞 Wernfried Domscheit 11/7/2023
是否确定?这两个代码示例的行为应相同
0赞 Александр Миронов 11/7/2023
绝对确定
2赞 Wernfried Domscheit 11/7/2023
你能分享一下解释吗?
1赞 prasad_ 11/7/2023
您可能需要参考手动主题聚合管道优化 - 包含子主题 $sort + $match 序列优化使用索引和文档筛选器提高性能
0赞 Joe 11/9/2023
你有索引吗{name:1, _id:-1}

答: 暂无答案