• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MongoDB快速翻页的方法

    翻阅数据是MongoDB最常见的操作之一。一个典型的场景是需要在你的用户界面中显示你的结果。如果你是批量处理的数据,同样重要的是要让你的分页策略正确,以便你的数据处理可以规模化。

    接下来,让我们通过一个例子来看在MongoDB中翻阅数据的不同方式。在这个例子中,我们有一个CRM数据库的用户数据,我们需要通过翻阅浏览和在同一时间显示10个用户。所以实际上,我们的页面大小是10。下方是我们的用户文档的结构:

    {
    
      _id,
    
      name,
    
      company,
    
      state
    
    }
    
    

    方法一:Using 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() ”的方法是有用的。如果您正在使用大数据集,您需要考虑其他方法。

    方法二:Using find() 和limit()

    以前的方法不能很好扩展其原因是skip() 命令。因此,本节的目标是实现分页不使用skip()命令。为此,我们将利用在存储数据中的自然顺序,比如时间戳或文档中存储的标识。

    在这个例子中,我们将使用“_id”存储每个文档。“_id”是一个MongoDB 的ObjectID结构,即 12 字节结构包含了时间戳、机械加工、进程标识符、计数器等。总体思路如下 :

    检索当前页中的最后一个文档 _id
    在下一个页面检索文件大于此”_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 = ...
    

    以上就是MongoDB快速翻页的方法,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • php中文本数据翻页(留言本翻页)
    • 如何编写翻页函数?
    • 点图片上一页下一页翻页效果
    • PHP 翻页 实例代码
    • PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
    • php实现的仿阿里巴巴实现同类产品翻页
    • 在图片上显示左右箭头类似翻页的代码
    • 解析Android中实现滑动翻页之ViewFlipper的使用详解
    • 通过MySQL优化Discuz!的热帖翻页的技巧
    • PHP翻页跳转功能实现方法
    上一篇:MongoDB 学习笔记(一)-MongoDB配置
    下一篇:MongoDB快速入门笔记(六)之MongoDB删除文档操作
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MongoDB快速翻页的方法 MongoDB,快速,翻页,的,方法,