我正在尝试使用Mongoose的可选过滤器选项进行分页。
我通过对数据库进行2次查询来处理分页,一次是查询文档,另一次是实际获取数据。没有分页,我的过滤器也能正常工作。我想知道有没有一种很好的方法从数据库返回文件的数量以及数据的页面(将显示当前页面的子集)?我怎样才能设置查询来执行此操作?
目前我正在进行两次单独的通话:
Model.find(filter, selectPaths, {limit: limit, skip: skip}, callback);
Model.count(filter, another_callback);
我是否只需要进行两次调用即可获得所需的所有数据?
答案 0 :(得分:4)
我会冒昧并链接到我的其他答案:ranged pagination和pagination with mongodb and node.js。
简短回答:不要使用跳过/限制,除非您的数据集很小(例如< 1000个左右的文档)。您获取的页面越多,执行的程度就越差。使用范围查询(field: {$gt: value}
),它们效率更高(当然,如果已编入索引)。
不,您不能通过一次查询返回总计数和部分数据。