猫鼬分页和过滤器

Bry*_*eng 5 pagination mongoose mongodb

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

我通过对数据库进行2次查询来处理分页,一次查询获取文档计数,一次查询实际获取数据。没有分页,我的过滤器也可以正常工作。我想知道是否有一个很好的方法可以从数据库中返回文档的计数以及数据的页面(将显示当前页面的子集)?如何设置查询以执行此操作?

目前,我正在打两个电话:

Model.find(filter, selectPaths, {limit: limit, skip: skip}, callback);
Model.count(filter, another_callback);
Run Code Online (Sandbox Code Playgroud)

我是否只需要打两个电话就可以获得我需要的所有数据?

Ser*_*sev 6

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

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

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

  • 您是否点击了答案中的链接?这篇文章中甚至还有一个数字。 (2认同)