我创建了一个简单的测试:
> db.t.count()
7852054
> db.t.find().skip( 1500000 ).limit(1)
{ "_id" : ObjectId("4fc078aa82618808f416e372"), "value" : 1500000 }
>
使用skip和limit进行分页在大型集合中花费的时间太长。
有没有更好的方法呢?
答案 0 :(得分:3)
您是否查看了docs?
不幸的是,跳过可能(非常)昂贵并且需要服务器 从集合的开头走,或索引,到达 偏移/跳过位置,然后才能开始返回数据页面 (限制)。随着页码数量的增加,跳过将变得越来越慢 cpu密集型,可能是IO绑定的,具有更大的集合。
基于范围的分页提供了更好的索引使用但不允许 您可以轻松跳转到特定页面。