MongoDB分頁技巧

    常見的分頁語句是skip+limit,操作簡單,容易理解,對於操作小數據量的Collection來說是很遍歷的,但是如果Collection裏的Document多了,使用skip+limit,就會出現類似MySQL的limit(10000,10)的問題,數據量大了,DB需要找出需要skip的成百萬的數據,再limit獲取寥寥幾條數據,這樣效率是相當低下的。解決辦法也是類似解決limit(10000,10)的方法。每次查詢之後,通過記錄上一頁查詢的最後一個Id(lastId),然後下一頁查詢需要添加一個條件:Id > lastId。這樣由於Id是有索引的,所以存儲引擎能快速定位到lastId(相當於完成了skip的過程)。再limit獲取需要的數據即可。

注:因爲是默認按Id排序,所以取lastId,如果有業務需要按其它字段排序,則需要按具體情況取其最後一個字段的值,下一頁判斷就是需要大於該字段的值

   

int size = 100;
Query query = new Query();
query.addCriteria(Criteria.where("_id").gt(lastId));
query.limit(size);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章