首页 > 数据库 > MongoDB > 正文

MongoDB 使用Skip和limit分页

2020-03-14 13:24:59
字体:
来源:转载
供稿:网友

本文章先来给大家简单介绍关于MongoDB 数据分页和排序 limit,skip用户的一些基础语句,然后用一个实例详细介绍MongoDB 数据分页和排序实例方法。

使用Skip和limit可以如下做数据分页:

Code:

 

 
  1. page1 = db.things.find().limit(20) 
  2. page2 = db.things.find().skip(20).limit(20) 
  3. page3 = db.things.find().skip(40).limit(20)  

备注:可用于分页,limit是pageSize,skip是第n-1页*pageSize (n-1表示几 第1,2...页)     skip表示跳过 多少条数据,   聚合管道的优化

1.$sort + $skip + $limit顺序优化

如果在执行管道聚合时,如果$sort、$skip、$limit依次出现的话,例如:

 

 
  1. { $sort: { age : -1 } }, 
  2. { $skip: 10 }, 
  3. { $limit: 5 } 

那么实际执行的顺序为:

 

 
  1. { $sort: { age : -1 } }, 
  2.     { $limit: 15 }, 
  3.     { $skip: 10 } 

$limit会提前到$skip前面去执行。

此时$limit = 优化前$skip+优化前$limit

这样做的好处有两个:

1.在经过$limit管道后,管道内的文档数量个数会“提前”减小,这样会节省内存,提高内存利用效率。

2.$limit提前后,$sort紧邻$limit这样的话,当进行$sort的时候当得到前“$limit”个文档的时候就会停止。

当数据量很小时,这样做分页完全没有问题。但是当数据量很大时,skip操作会变的很慢,应该避免使用。

(不止是mongoDb会这样,大部分数据库都是。)可以通过改变查询文档的规则来达到分页效果,避免使用skip来跳过大量的数据。

(通过计算,得到下次查询应该从什么地方开始)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表