mongoDB实现分页的方法

发布时间 - 2026-01-11 01:45:21    点击率:

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  # 分页  # node.js基于mongodb的搜索分页示例  # Java操作MongoDB模糊查询和分页查询  # MongoDB 使用Skip和limit分页  # 高效mongodb的php分页类(不使用skip)  # mongoDB分页的两种方法(图例)  # 种方法  # 第一页  # 就能  # 我们可以  # 放在  # 太多  # 就像  # 以此类推  # 很高  # 要做  # 这样做  # 比较好  # 可以使用  # 不适合  # 所占  # 这三个  # 第二种  # 第一种  # 跳过 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: EditPlus中的正则表达式 实战(2)  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  Laravel如何为API编写文档_Laravel API文档生成与维护方法  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  如何在 React 中条件性地遍历数组并渲染元素  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  用yum安装MySQLdb模块的步骤方法  使用Dockerfile构建java web环境  Android滚轮选择时间控件使用详解  如何在阿里云香港服务器快速搭建网站?  Laravel集合Collection怎么用_Laravel集合常用函数详解  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  Laravel怎么在Controller之外的地方验证数据  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Python文件流缓冲机制_IO性能解析【教程】  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  Laravel Session怎么存储_Laravel Session驱动配置详解  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何在景安服务器上快速搭建个人网站?  智能起名网站制作软件有哪些,制作logo的软件?  如何在阿里云高效完成企业建站全流程?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  成都网站制作公司哪家好,四川省职工服务网是做什么用?  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  如何在阿里云虚拟主机上快速搭建个人网站?  Laravel如何记录自定义日志?(Log频道配置)  EditPlus中的正则表达式 实战(1)  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何用VPS主机快速搭建个人网站?  如何在不使用负向后查找的情况下匹配特定条件前的换行符  在线制作视频的网站有哪些,电脑如何制作视频短片?  javascript中对象的定义、使用以及对象和原型链操作小结  LinuxShell函数封装方法_脚本复用设计思路【教程】  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  高端企业智能建站程序:SEO优化与响应式模板定制开发  Laravel PHP版本要求一览_Laravel各版本环境要求对照  微信公众帐号开发教程之图文消息全攻略  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  Laravel安装步骤详细教程_Laravel环境搭建指南  jQuery中的100个技巧汇总  网站制作大概多少钱一个,做一个平台网站大概多少钱?  如何获取免费开源的自助建站系统源码?  如何用IIS7快速搭建并优化网站站点?  如何利用DOS批处理实现定时关机操作详解