在mongodb文档上它说:( 来源)
不幸的是,跳过可能(非常)昂贵并且需要服务器从集合的开头或索引走,以便在它开始返回数据页面(限制)之前到达偏移/跳过位置.随着页面数量的增加,使用更大的集合,skip将变得更慢并且更加cpu密集,并且可能是IO绑定.基于范围的分页可以更好地使用索引,但不允许您轻松跳转到特定页面.
什么是基于范围的分页,它的文档在哪里?
基本思想是将分页写入查询谓词模式.
例如,如果您按日期列出论坛帖子,并且您想显示下一页,则使用当前页面上最后一篇文章的日期作为谓词.MongoDB可以使用在日期字段上构建的索引.
//older posts db.forum_posts.find({date: {$lt: ..last_post_date..} }).sort({date: -1}).limit(20);
当然,如果您用于排序的字段不是唯一的,那么这会变得更复杂一些.