转MongoDB 使用Skip和limit分页

关于MongoDB 数据分页和排序 limit,skip用户的一些基础语句,介绍MongoDB 数据分页和排序实例方法。

使用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来跳过大量的数据。

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

时间: 2024-09-21 21:18:54

转MongoDB 使用Skip和limit分页的相关文章

MongoDB 使用Skip和limit分页_MongoDB

使用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.$so

mysql-Mysql中limit分页后将数据倒叙排列

问题描述 Mysql中limit分页后将数据倒叙排列 在MySQL中如何将分页的数据倒叙排列?比如取第10~20条数据,然后将数据倒叙排列 解决方案 mysql limit 分页mysql 分页用的limitmysql limit 分页 解决方案二: 先order by再limit.order by接你要排序的字段 解决方案三: 先用order by将所有数据都倒排序好,再用limit 9,10 解决方案四: select * from persons limit 10; 意思是,起点为0,开始

mysql-mySQL的limit分页怎么转换成SQL server语句

问题描述 mySQL的limit分页怎么转换成SQL server语句 String sql="select " + str + " from product,shop where product.shop_id=shop.shop_id " + " limit " + (page *size) + "," + size;//通过limit来达到分页的效果_ 其中定义了private String str = "pr

Mysql Limit 分页查询优化详解_Mysql

select * from table LIMIT 5,10; #返回第6-15行数据 select * from table LIMIT 5; #返回前5行 select * from table LIMIT 0,5; #返回前5行 我们来写分页 物理分页 select * from table LIMIT (当前页-1)*每页显示条数,每页显示条数; MySQL之Limit简单优化.md 同样是取90000条后100条记录,传统方式还是改造方式? 传统方式是先取了前90001条记录,取其中最

mysql limit 分页优化详解

实现分页,我们一般会使用 select * from table   where id >100  limit   a,b   ,  当分页过大时,如达到一万页,此时 a =十万 ,b=10,   虽然此处使用到了索引(不用索引情况会更加糟糕),但是通过索引检索后还是需要回表去取 十万零一十条数据  然后丢掉前十万条, 返回十条,这个代价明显太大了.   通常的解决方法是,限制总页数,因为通过没有用户会对一万页后的数据感兴趣,当然也可以通过coreseek sphinx 等实现   当然也可以通

mysql limit分页优化方法分享_Mysql

同样是取10条数据 select * from yanxue8_visit limit 10000,10 和 select * from yanxue8_visit limit 0,10 就不是一个数量级别的. 网上也很多关于limit的五条优化准则,都是翻译自MySQL手册,虽然正确但不实用.今天发现一篇文章写了些关于limit优化的,很不错. 文中不是直接使用limit,而是首先获取到offset的id然后直接使用limit size来获取数据.根据他的数据,明显要好于直接使用limit.这

SQL优化:limit分页优化

分页查询 分页查询的问题点主要集中在 如何快速定位起始点 减少无用数据缓存 mysql为分页查询提供了很方便的关键字limit,但这个关键字在数据量较大时,却很低效. "limit m,n"关键字的意思是,从第m行开始,扫描满足条件的n个偏移行.若需从第1行开始,则不需要指定m值. 示例 表aaaaa中共有2375690数据. 优化前的SQL SQL执行结果: SELECT DISTINCT(device_id) uid FROM aaaaa WHERE status = 0 LIMI

MongoDB入门教程(包含安装、常用命令、相关概念、使用技巧、常见操作等)_MongoDB

一.安装和配置  MongoDB 的官方下载站是 http://www.mongodb.org/downloads,可以去上面下载最新的安装程序  Windows 平台的安装  ● 步骤一: 下载 MongoDB     点击上方官方下载地址, 并下载 Windows 版本 ● 步骤二: 设置 MongoDB 程序存放目录     下载完成后, 解压到自定义文件夹,例: D:\mongodb\ ● 步骤三: 设置数据文件存放目录     在 D:\mongodb\ 目录下创建 db 和 logs

MongoDB 数据分页和排序 limit,skip,sort用户

排序用sort,相当于order by,升序用1表示,降序用-1 比如,按age字段升序排列:  代码如下 复制代码 db.user.find().sort({"age":1}) 如果有多个字段,按姓名降序,年龄升序  代码如下 复制代码 db.user.find().sort({"name":-1,"age":1}) limit和skip一起用,相当于mysql里的limit:  代码如下 复制代码 b.user.find().skip(1).