MongoDB 使用Skip和limit分页
程序员文章站
2022-05-16 23:13:35
使用skip和limit可以如下做数据分页:
code:
page1 = db.things.find().limit(20)
page2 = d...
使用skip和limit可以如下做数据分页:
code:
page1 = db.things.find().limit(20) page2 = db.things.find().skip(20).limit(20) 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依次出现的话,例如:
{ $sort: { age : -1 } }, { $skip: 10 }, { $limit: 5 }
那么实际执行的顺序为:
{ $sort: { age : -1 } }, { $limit: 15 }, { $skip: 10 }
$limit会提前到$skip前面去执行。
此时$limit = 优化前$skip+优化前$limit
这样做的好处有两个:
1.在经过$limit管道后,管道内的文档数量个数会“提前”减小,这样会节省内存,提高内存利用效率。
2.$limit提前后,$sort紧邻$limit这样的话,当进行$sort的时候当得到前“$limit”个文档的时候就会停止。
当数据量很小时,这样做分页完全没有问题。但是当数据量很大时,skip操作会变的很慢,应该避免使用。
(不止是mongodb会这样,大部分数据库都是。)可以通过改变查询文档的规则来达到分页效果,避免使用skip来跳过大量的数据。
(通过计算,得到下次查询应该从什么地方开始)
上一篇: C#实现窗体中的各个控件同比自动放缩大小
下一篇: Java操作MongoDB数据库示例分享
推荐阅读
-
【SQL】Oracle和Mysql的分页、重复数据查询(limit、rownum、rowid)
-
使用MongoDB和JSP实现一个简单的购物车系统实例
-
详解MySQL的limit用法和分页查询语句的性能分析
-
mongodb 在 linux 中的安装和简单使用
-
使用limit,offset分页场景时为什么会慢
-
MySQL limit使用方法以及超大分页问题解决
-
学习使用mongoDB和pymongo
-
MongoDB学习(使用分组、聚合和映射-归并)
-
sqlserver 通用存储过程分页代码(附使用ROW_NUMBER()和不使用ROW_NUMBER()两种情况性能分析)
-
mysql大数据量使用limit分页,随着页码的增大,查询效率越低下怎么办?