7

我正在尝试使用 Mongoose 的可选过滤器选项进行分页。

我通过对数据库进行 2 个查询来处理分页,一个用于获取文档计数,另一个用于实际获取数据。没有分页,我的过滤器也能正常工作。我想知道有没有一种好方法可以从数据库中返回文档的数量以及数据的页面(将为当前页面显示的子集)?我如何设置查询来做到这一点?

目前我正在打两个单独的电话:

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

我是否只需拨打两次电话即可获取所需的所有数据?

4

1 回答 1

6

我会冒昧地链接到我的其他答案:ranged paginationpagination with mongodb 和 node.js

简短回答:不要使用跳过/限制,除非您的数据集很小(例如 < 1000 个文档左右)。您获取的页面越大,它的性能就越差。使用范围查询 ( field: {$gt: value}),它们效率更高(当然,如果有索引)。

不,您不能通过一次查询返回总计数和部分数据。

于 2012-09-04T08:44:39.533 回答