zoukankan      html  css  js  c++  java
  • 转MongoDB 使用Skip和limit分页

    关于MongoDB 数据分页和排序 limit,skip用户的一些基础语句,介绍MongoDB 数据分页和排序实例方法。

    使用Skip和limit可以如下做数据分页:

    Code:

       page1 = db.things.find().limit(20)

       page2 = db.things.find().skip(20).limit(20)

       page3 = db.things.find().skip(40).limit(20) 

    备注:可用于分页,limit是pageSize,skip是第n-1页*pageSize (n-1表示几  第1,2...页)skip表示跳过  多少条数据,聚合管道的优化。

         1.$sort  +  $skip  +  $limit顺序优化

        如果在执行管道聚合时,如果$sort、$skip、$limit依次出现的话,例如:

        { $sort: { age : -1 } },

        { $skip: 10 },

        { $limit: 5 }

        那么实际执行的顺序为:

    { $sort: { age : -1 } },

        { $limit: 15 },

        { $skip: 10 }

        $limit会提前到$skip前面去执行。

        此时$limit = 优化前$skip+优化前$limit

        这样做的好处有两个: 

        1.在经过$limit管道后,管道内的文档数量个数会“提前”减小,这样会节省内存,提高内存利用效率。

        2.$limit提前后,$sort紧邻$limit这样的话,当进行$sort的时候当得到前“$limit”个文档的时候就会停止。

        当数据量很小时,这样做分页完全没有问题。但是当数据量很大时,skip操作会变的很慢,应该避免使用。  

    (不止是mongoDb会这样,大部分数据库都是。)可以通过改变查询文档的规则来达到分页效果,避免使用skip来跳过大量的数据。

    (通过计算,得到下次查询应该从什么地方开始)

  • 相关阅读:
    融云技术分享:全面揭秘亿级IM消息的可靠投递机制
    企业微信的IM架构设计揭秘:消息模型、万人群、已读回执、消息撤回等
    喜马拉雅亿级用户量的离线消息推送系统架构设计实践
    uni-app 项目使用 npm 包中的小程序自定义组件
    Leetcode563. 二叉树的坡度
    vue看源码遇到 报错
    windows使用
    mysql 显示行号
    从优秀到卓越
    【面经】阿里蚂蚁金服22秋招-Java后端
  • 原文地址:https://www.cnblogs.com/jackluo/p/4468031.html
Copyright © 2011-2022 走看看