基于范围的寻呼mongodb

时间:2011-07-24 09:37:18

标签: mongodb pagination paging

在mongodb文档上说: (source)

  

不幸的是,跳过可能(非常)昂贵并且需要服务器   从集合的开头走,或索引,到达   偏移/跳过位置,然后才能开始返回数据页面   (限制)。随着页码数量的增加,跳过将变得越来越慢   cpu密集,可能是IO绑定,具有更大的集合。范围   基于分页提供了更好的索引使用,但不允许   轻松跳转到特定页面。

什么是基于范围的分页?它的文档在哪里?

1 个答案:

答案 0 :(得分:17)

基本思想是将分页写入查询谓词模式。

例如,如果您按日期列出论坛帖子,并且您想显示下一页,则使用当前页面上最后一篇文章的日期作为谓词。 MongoDB可以使用在日期字段上构建的索引。

//older posts
db.forum_posts.find({date: {$lt: ..last_post_date..} }).sort({date: -1}).limit(20);

当然,如果您用于排序的字段不是唯一的,那么这会变得更复杂。