http://www.cnblogs.com/xiaolai/p/3401289.html

mongoDB的分页查询是通过limit(),skip(),sort()这三个函数组合进行分页查询的

下面这个是我的测试数据

db.test.find().sort({"age":1});

第一种方法

查询第一页的数据:db.test.find().sort({"age":1}).limit(2);

查询第二页的数据:db.test.find().sort({"age":1}).skip(2).limit(2);

查询其他页数以此类推。。。

第二种方法

查询第一页的数据:db.test.find().sort({"age":1}).limit(2);

跟上面的第一种方法一样的。

查询第二页的数据:

这个是获取第一页最后一条记录的值,然后排除前面的记录,就能获取到新的记录了

总结来说,如果数据量不是很大的话,可以使用第一种方法,毕竟比较简单,如果数据量比较大的话,使用第二种方法比较好,因为这样就可以不用到skip()这个函数,skip跳过太多的记录,效率有点低


经过认真的考虑,第二种方法确实不适合跳页,而且效率也不是很高

对于海量数据的话,我们要做些特殊的处理,

有以下2种方法

第一种方法

限制分页的页数,类似百度的百度的分页处理,只是显示前面的七百多条记录,这样的就不用考虑性能的问题了,毕竟一般人都只是翻到前面十页,就找到自己需要的了

后面的统计结果应该是估算出来的,根据查出来的这些记录所占的比例估算出总的记录数

第二种方法

我们可以这样做,假设是根据id排序的,我们可以id跟id所在的页数的序号存到redis/MemberCached中,

就像这样,假设每一页有10条记录

id   page

1    1

2    1

。。。

10   1

11    2

12   2

。。。。

20   2

这样我们查第一页的时候就能直接取出十条数据

假设有1亿条数据,一条记录id占4个字节,其他信息的占一个字节,一条记录就占5个字节

1 0000 0000 *5/(1024*1024)=476MB

这种做法使用空间换时间,一般数据库查询的时间大多花在跟数据库的连接上,放在缓存中,可以大大加快查询的速度

mongoDB分页的两种方法相关推荐

  1. Yii实现分页的两种方法

    Yii实现分页的两种方法,一种是用DAO实现,另外一种是在widget实现. 各有优点吧,第一种效率会高一点, 第二种可以使用自带的表格,方便一些. 一. DAO实现分页. [Controller层] ...

  2. Layui数据表格分页通过两种方法实现

    SSM框架+Layui框架实现数据表格分页效果图如下所示: 具体实现方法: 方法一:(基于前台进行分页) 实现思路:主要是后台将全部数据返回到前台,之后前台通过Layui的parseData函数来实现 ...

  3. MongoDB备份的两种方法

    使用mongodb命令:mongodump 将数据文件导出到文件 使用文件系统快照,这需要开启日志功能,还需要系统支持块级设备备份:速度很快,但日志产生大

  4. html按照字数分页,纯javascript实现分页(两种方法)

    先给大家贴效果图: 网上确实有很多分页的插件以及开源代码,单本是一个后台开发猿,前台css等样式还驾驭不住,所以就开始自己去写了.其实这个分页原理很简单,就是用ajax往后台传值(当前页码),后台使用 ...

  5. php javascript分页,纯javascript实现分页(两种方法)

    有的时候页面需要很多不同的表组成的数据,该怎么分页呢?使用数据库分页很简单,那么如何使用js实现分页呢?接下来,小编帮大家解决这个问题,需要的朋友一起来学习吧 先给大家贴效果图: 网上确实有很多分页的 ...

  6. Mysql中分页查询两个方法比较

    mysql中分页查询有两种方式, 一种是使用COUNT(*)的方式,具体代码如下 1 2 3 SELECT COUNT(*) FROM foo WHERE b = 1; SELECT a FROM f ...

  7. MySQL数据库查询时间段的两种方法

    MySQL数据库查询时间段的两种方法: 1. SELECT* FROMgroup_details model WHEREmodel.create_time BETWEEN TO_DAYS ( '201 ...

  8. delphi 读取excel 两种方法

    两种方法,一是用ADO连接,问题是Excel文件内容要规则,二是用OLE打开,但操作就没有象 操作数据库那么方便了. 一.用ADO连接: 设置属性ConnetionString  选择 Microso ...

  9. php控制windows系统关机,window_winXP系统设置一键关机的两种方法,windows系统关机需要三步,对我 - phpStudy...

    winXP系统设置一键关机的两种方法 windows系统关机需要三步,对我这样的懒人来说实在不方便.在网络上寻找了许多方法,最后用了一个.现在介绍给有需要的人.关机方法是鼠标一点关机或热键关机. 创建 ...

最新文章

  1. codewars-013: Ease the StockBroker
  2. 关于使用asp.net调试器出现的问题及相关解决方法
  3. three.js 一个页面可以存在多个render吗_你确定把Spring MVC的视图机制吃透了吗?...
  4. vue打包后图片路径错误
  5. 深入理解 Java 垃圾回收机制
  6. poj - problem 3070 Fibonacci 【矩阵 +快速幂】
  7. 编译lzlib mysql5.6_CentOS下编译安装MySQL5.6
  8. EVC获取当前工作路径
  9. Hibernate的双向1-N关联(五)
  10. SQL Server2019 Express下载安装教程-——孟师傅
  11. 计算机毕业设计JAVA‘大学生心理健康咨询管理系统mybatis+源码+调试部署+系统+数据库+lw
  12. 仿iReader 阅读器(swift)
  13. 【实用性程序】弧微分计算圆周长
  14. 闲鱼选品的6个维度,附赠35个爆款品类!
  15. mysql 唯一性榆树_榆树有多少种
  16. Raspberry 4B
  17. 对帧率、I/P率、I帧间隔的理解2021-11-16
  18. 判断虚拟键盘是删除键的方法
  19. Prolog实现太阳系星体识别专家系统
  20. Let's go home 【2-sat 经典作图】+【scc判定有无解】

热门文章

  1. [网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
  2. 【数据结构与算法】之深入解析“等差数列划分II”的求解思路与算法示例
  3. 【数据结构与算法】之深入解析“合并区间”的求解思路与算法示例
  4. Git之深入解析如何使用Git调试项目源码中的问题
  5. 使用 Carla 和 Python 的自动驾驶汽车第 4 部分 —— 强化学习Action
  6. 【Tools】Visual Studio 2019搭建Qt开发环境
  7. 【STM32】DAC相关函数和类型
  8. 【Linux】一步一步学Linux——watch命令(135)
  9. [Qt教程] 第26篇 数据库(六)SQL关系表格模型QSqlRelationalTableModel
  10. c语言中lookup函数功能,Lookup函数详解