猫鼬:如何实施分页?

时间:2015-08-17 19:10:04

标签: node.js mongodb pagination mongoose

我无法找到任何相关信息。显然,要获取下一页,您将要使用.skip和.limit,但如何确定是否有下一页?基本上是计算has_next_page (boolean)

在原始mongo中,您可以cursor.hasNext()查看是否有另一页。

我只能想到用猫鼬做两种方法:

  1. .limit(pageSize + 1)

    然后仅返回pageSize个结果,但使用最后一个结果 确定是否有其他结果。

  2. .count()

    获取查询的计数,看看它是否大于pageNum * pageSize

  3. 第一个似乎是hacky而第二个看起来非常低效(数量很贵,对吗?),有没有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:2)

如果您不想显示页数,那么您的第一个解决方案就没问题,但如果您想获得页数numberOfPages = count/numberPerPage,则需要获取计数,这样您至少会运行count()一旦开始,所以当用户使用分页数据时,如果您想要使用此信息进行更新,请查询"或更多信息{如果对您来说很重要,请忽略此信息,请在此处发表评论并让我们讨论} "

因此,第一个查询将需要一段时间在MongoDB上关于计数性能的问题链接,告知他们对此方法进行了改进https://jira.mongodb.org/browse/SERVER-1752