广告
返回顶部
首页 > 资讯 > 数据库 >使用MongoDB快速分页
  • 151
分享到

使用MongoDB快速分页

2024-04-02 19:04:59 151人浏览 泡泡鱼
摘要

使用MongoDB快速分页 英文原文:Http://blog.monGodirector.com/fast-paging-with-mongoDB/ 通过你的数据分页是使用MongoDB

使用MongoDB快速分页

 

英文原文:

Http://blog.monGodirector.com/fast-paging-with-mongoDB/

 

通过你的数据分页是使用MongoDB最常用操作之一。典型的案例是需要在你的UI的表格中显示结果。如果你正在批处理数据,分页策略正确是很重要的,以致你的数据处理可扩展。

 

让我们通过一个示例来看看在MongoDB中通过数据分页的不同方法。在这个示例中,我们有一个用户数据库CRM,我们需要分页并一次显示10个用户。因此我们的分页大小是10.这是我们的用户文档结构:

{
_id,
name,
company,
state
}

 

方法1:使用skip()和limit()

 

MongoDB本地支持使用skip()和limit()命令的分页操作。skip(n)命令告诉MongoDB跳过n条结果,limit(n)命令告诉MongoDB限制结果长度为“n”个结果。典型地你会通过游标使用skip()和limit()命令 – 但是为了描述这个案例我们提供了控制台命令来完成相同的结果。因为代码的简洁性,也排除了检查代码的限制。

//Page 1
db.users.find().limit (10)
//Page 2
db.users.find().skip(10).limit(10)
//Page 3
db.users.find().skip(20).limit(10)
........

你明白了。通常获取第n页的代码像这样:

db.users.find().skip(pagesize*(n-1)).limit(pagesize)

然而随着数据大小的增长,该方法有严重的性能问题。原因是每次查询执行时,完整的结果集被构建,然后实例必须从集合的开始定位到特定的偏移位置。因为你的偏移增加,这个过程变得越来越慢。这个过程也不能有效利用索引。因此典型地“skip()”和“limit()”方法对于小的数据集时是有效的。如果你使用大数据集,你需要考虑其他方法。

 

方法2:使用find()和limit()

 

之前的方法扩展得不是很好的原因是skip()命令。因此这部分的目标是不使用“skip()”命令执行分页。我们使用时间戳或文档中的id以自然顺序存储数据。在这个示例中,我们使用存储在每个文档中的“_id”。“_id”是一个MongoDB的ObjectID结构,是一个12字节的结构,包含时间戳、机器、进程ID、计数器等。整体想法如下:

1. 获取当前页最后文档的_id

2. 获取大于该“_id”的下一页的文档


//Page 1
db.users.find().limit(pageSize);
//Find the id of the last document in this page
last_id = ...
//Page 2
users = db.users.find({'_id'> last_id}). limit(10);
//Update the last id with the id of the last document in this page
last_id = ...


该方法保持了存在于“_id”列中的固有顺序。也因为“_id”列默认被索引,查找性能非常好。如果你正使用的列没有被索引,你的性能将会变差 -- 因此确保该列有索引是很重要的。


如果你也想为你的分页以特定顺序排列数据,你可以用以上技术使用sort()从句。确保排序过程覆盖索引获得最佳性能非常重要。你可以使用.explain后缀到你的查询去决定。

users = db.users.find({'_id'> last_id}). sort(..).limit(10);
//Update the last id with the id of the last document in this page
last_id = ...


一如既往如果你有任何问题或者评论请随时联系我们support@mongodirector.com

您可能感兴趣的文档:

--结束END--

本文标题: 使用MongoDB快速分页

本文链接: https://www.lsjlt.com/news/37251.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用MongoDB快速分页
    使用MongoDB快速分页 英文原文:http://blog.mongodirector.com/fast-paging-with-mongodb/ 通过你的数据分页是使用MongoDB...
    99+
    2022-10-18
  • Mybatis利用分页插件PageHelper快速实现分页查询
    目录前言 首先创建一个Maven项目 数据库中创建一张表设置Mybatis配置文件 编写pojo实体类和mapper接口和mapper映射文件创建测试类总结前言 Mybatis算是...
    99+
    2022-11-12
  • 快速解决mysql深分页问题
    目录背景概括1、limit深分页问题描述2、sql慢原因分析聚簇索引和非聚簇索引常见解决方案通过子查询优化标签记录法方案对比实战案例总结背景 日常需求开发过程中,相信大家对于limit一定不会陌生,但是使用limit时,...
    99+
    2022-07-13
    mysql深分页 mysql分页
  • Flask快速实现分页效果示例
    先上整体效果图: 然后是分页图详情: 与本例相关的路由和模板包括: 路由:views.py @app.route('/blog/list/<int:page>',...
    99+
    2022-11-11
  • 怎么快速掌握PHP文章分页
    这期内容当中小编将会给大家带来有关怎么快速掌握PHP文章分页,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。PHP语言为我们带来了许多功能的实现,应用范围非常广泛。我们今天为大家详细讲解有关PHP文章分页的...
    99+
    2023-06-17
  • Mybatis怎么快速实现分页查询
    这篇文章主要讲解了“Mybatis怎么快速实现分页查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mybatis怎么快速实现分页查询”吧!目录前言首先创建一个Maven项目数据库中创建一张...
    99+
    2023-06-20
  • MySQL深度分页(千万级数据量如何快速分页)
    目录前言案例优化小结前言 后端开发中为了防止一次性加载太多数据导致内存、磁盘IO都开销过大,经常需要分页展示,这个时候就需要用到MySQL的LIMIT关键字。但你以为LIMIT分页就万事大吉了么,Too young,...
    99+
    2022-05-20
    MySQL 深度分页 MySQL 千万级分页
  • 怎么利用MySQL技能快速了解MongoDB
    本篇内容介绍了“怎么利用MySQL技能快速了解MongoDB”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2022-10-18
  • 大数据报表怎么快速分页呈现
    今天就跟大家聊聊有关大数据报表怎么快速分页呈现,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在说明这个问题的处理方法前,先了解下是什么原因导致的大数据量报表呈现慢的问题。一般不外乎这...
    99+
    2023-06-03
  • MySQL 千万级数据量如何快速分页
    前言 后端开发中为了防止一次性加载太多数据导致内存、磁盘IO都开销过大,经常需要分页展示,这个时候就需要用到MySQL的LIMIT关键字。但你以为LIMIT分页就万事大吉了么,Too young,too simple...
    99+
    2022-05-16
    MySQL 快速分页 MySQL 分页 MySQL 千万级数据分页
  • Mysql中怎么优化千万级快速分页
    本篇文章为大家展示了Mysql中怎么优化千万级快速分页,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 数据表 collect ( id, title ,info ...
    99+
    2022-10-18
  • 使用 Python 30分钟 教你快速搭
    10个优秀的程序员里,有9个人都有写博客的习惯。这是非常好的习惯,它使得知识得以提炼,转输出为输入,在提升自己的同时,还能利用互联网易传播的特性,将知识分享给每一个热爱学习的人。这是值得每个程序员,投入时间和精力去坚持做下去的事。博客既...
    99+
    2023-01-31
    教你 快速 Python
  • C#使用ScrapySharp快速从网页采集数据
    ScrapySharp是一个帮助我们快速实现网页数据采集的库,它主要提供了如下两个功能 从Url获取Html数据提供CSS选择器的方式解析Html节点 安装: ScrapySharp...
    99+
    2022-11-13
  • 度量快速开发平台分页构建介绍
     度量快速开发平台中,网格部件使用非常多,一般情况下,比如数据在1万以内的,都可以直接快速查询出来,如果数据量很大,考虑到一次性打开可能有效率影响,因此可能有网格部件显示数据的分页需求。虽然数据量...
    99+
    2022-10-18
  • 利用web.py快速搭建网页hellow
        访问web.py官网 http://webpy.org/ 根据网站步骤,利用 pip install web.py 若没有 PIP 则先安装pip 运行  sudo apt-get install python-pip...
    99+
    2023-01-30
    快速 网页 web
  • 如何使用Fullpage插件快速开发整屏翻页的页面
    这篇文章将为大家详细讲解有关如何使用Fullpage插件快速开发整屏翻页的页面,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、一些必要的资源 //jquery <...
    99+
    2022-10-19
  • Docker 的快速使用
    ubuntu安装 centos安装 安装完毕之后执行一下这条命令,可以避免每次使用docker命令都需要sudo权限 sudo usermod -aG docker $USER 阿里云docker镜像加速 DockerHub 遇到不懂或者不...
    99+
    2023-08-30
    docker 容器 运维
  • Dreamweaver如何使用框架结构快速制作网页
    这篇文章将为大家详细讲解有关Dreamweaver如何使用框架结构快速制作网页,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。方法如下打开Dreamweaver 软件,设置好站点,建立新文件,类型为HTML...
    99+
    2023-06-08
  • Springmvc应用Mongodb分页实现的示例分析
    这篇文章将为大家详细讲解有关Springmvc应用Mongodb分页实现的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。对于web应用来说分页显示数据是是最基本的功能,作为经常开发web应用的程序...
    99+
    2023-05-30
    springmvc mongodb
  • SparkSQL使用快速入门
    目录一、SparkSQL的进化之路二、认识SparkSQL2.1 什么是SparkSQL2.2 SparkSQL的作用2.3 运行原理2.4 特点2.5 SparkSession2....
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作