mongoDB分页的两种方法
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分页的两种方法相关推荐
- Yii实现分页的两种方法
Yii实现分页的两种方法,一种是用DAO实现,另外一种是在widget实现. 各有优点吧,第一种效率会高一点, 第二种可以使用自带的表格,方便一些. 一. DAO实现分页. [Controller层] ...
- Layui数据表格分页通过两种方法实现
SSM框架+Layui框架实现数据表格分页效果图如下所示: 具体实现方法: 方法一:(基于前台进行分页) 实现思路:主要是后台将全部数据返回到前台,之后前台通过Layui的parseData函数来实现 ...
- MongoDB备份的两种方法
使用mongodb命令:mongodump 将数据文件导出到文件 使用文件系统快照,这需要开启日志功能,还需要系统支持块级设备备份:速度很快,但日志产生大
- html按照字数分页,纯javascript实现分页(两种方法)
先给大家贴效果图: 网上确实有很多分页的插件以及开源代码,单本是一个后台开发猿,前台css等样式还驾驭不住,所以就开始自己去写了.其实这个分页原理很简单,就是用ajax往后台传值(当前页码),后台使用 ...
- php javascript分页,纯javascript实现分页(两种方法)
有的时候页面需要很多不同的表组成的数据,该怎么分页呢?使用数据库分页很简单,那么如何使用js实现分页呢?接下来,小编帮大家解决这个问题,需要的朋友一起来学习吧 先给大家贴效果图: 网上确实有很多分页的 ...
- Mysql中分页查询两个方法比较
mysql中分页查询有两种方式, 一种是使用COUNT(*)的方式,具体代码如下 1 2 3 SELECT COUNT(*) FROM foo WHERE b = 1; SELECT a FROM f ...
- MySQL数据库查询时间段的两种方法
MySQL数据库查询时间段的两种方法: 1. SELECT* FROMgroup_details model WHEREmodel.create_time BETWEEN TO_DAYS ( '201 ...
- delphi 读取excel 两种方法
两种方法,一是用ADO连接,问题是Excel文件内容要规则,二是用OLE打开,但操作就没有象 操作数据库那么方便了. 一.用ADO连接: 设置属性ConnetionString 选择 Microso ...
- php控制windows系统关机,window_winXP系统设置一键关机的两种方法,windows系统关机需要三步,对我 - phpStudy...
winXP系统设置一键关机的两种方法 windows系统关机需要三步,对我这样的懒人来说实在不方便.在网络上寻找了许多方法,最后用了一个.现在介绍给有需要的人.关机方法是鼠标一点关机或热键关机. 创建 ...
最新文章
- codewars-013: Ease the StockBroker
- 关于使用asp.net调试器出现的问题及相关解决方法
- three.js 一个页面可以存在多个render吗_你确定把Spring MVC的视图机制吃透了吗?...
- vue打包后图片路径错误
- 深入理解 Java 垃圾回收机制
- poj - problem 3070 Fibonacci 【矩阵 +快速幂】
- 编译lzlib mysql5.6_CentOS下编译安装MySQL5.6
- EVC获取当前工作路径
- Hibernate的双向1-N关联(五)
- SQL Server2019 Express下载安装教程-——孟师傅
- 计算机毕业设计JAVA‘大学生心理健康咨询管理系统mybatis+源码+调试部署+系统+数据库+lw
- 仿iReader 阅读器(swift)
- 【实用性程序】弧微分计算圆周长
- 闲鱼选品的6个维度,附赠35个爆款品类!
- mysql 唯一性榆树_榆树有多少种
- Raspberry 4B
- 对帧率、I/P率、I帧间隔的理解2021-11-16
- 判断虚拟键盘是删除键的方法
- Prolog实现太阳系星体识别专家系统
- Let's go home 【2-sat 经典作图】+【scc判定有无解】
热门文章
- [网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
- 【数据结构与算法】之深入解析“等差数列划分II”的求解思路与算法示例
- 【数据结构与算法】之深入解析“合并区间”的求解思路与算法示例
- Git之深入解析如何使用Git调试项目源码中的问题
- 使用 Carla 和 Python 的自动驾驶汽车第 4 部分 —— 强化学习Action
- 【Tools】Visual Studio 2019搭建Qt开发环境
- 【STM32】DAC相关函数和类型
- 【Linux】一步一步学Linux——watch命令(135)
- [Qt教程] 第26篇 数据库(六)SQL关系表格模型QSqlRelationalTableModel
- c语言中lookup函数功能,Lookup函数详解