程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MongoDB數據庫 >> MongoDB綜合知識 >> MongoDB 使用Skip和limit分頁

MongoDB 使用Skip和limit分頁

編輯: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來跳過大量的數據。

(通過計算,得到下次查詢應該從什麼地方開始)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved