2012-09-04 57 views
2

我試圖用Mongoose做一個可選的過濾選項分頁。貓鼬分頁和過濾器

我通過對數據庫進行2次查詢來處理分頁,一次獲取文檔的計數,一次獲取數據。沒有分頁,我的過濾器也能正常工作。我想知道是否有一種很好的方法可以從數據庫中返回文檔的數量以及數據的頁面(顯示當前頁面的子集)?我怎麼能設置查詢來做到這一點?

目前我正在做兩個單獨的呼叫:

Model.find(filter, selectPaths, {limit: limit, skip: skip}, callback); 
Model.count(filter, another_callback); 

難道我只需要兩次調用來獲得我需要的所有數據?

回答

3

我會冒昧並鏈接到我的其他答案:ranged paginationpagination with mongodb and node.js

簡短回答:不要使用跳過/限制,除非您的數據集很小(如< 1000文檔左右)。您抓取的頁越大,執行的效果越差。使用範圍查詢(field: {$gt: value}),它們更有效率(當然,如果編入索引的話)。

並且不,您不能使用一個查詢返回總數和部分數據。

+0

感謝您的提示!我會考慮它們 –

+0

跳過和限制分頁的使用效率如何?對於多少數據,跳過會毫無問題地工作?我已閱讀博客文章,指出使用基於範圍的分頁來處理大型數據集,但是大型數據集有多少? –

+0

你是否按照答案中的鏈接?在這個帖子中甚至有一些數字。 –