我们说我有3条记录这些分数:
{_id: 3, score: 0}, {_id: 20, score: 2.5}, {_id: 1, score: 0}
现在,我以这种方式查询
Model.find({
score: {$lt: lastScore}
})
.sort({score: -1})
.limit(2)
lastScore 是从此查询中找到的最新记录的得分。这样,在下一次迭代中,我可以获得以下记录页面,而不包括以前的记录。
但是存在一个很大的问题,让我们看看这个查询会发生什么:
首先,将按分数排序的2条记录:{_id: 20, score: 2.5}, {_id: 3, score: 0}
。因此, lastScore 将等于0.如果您看到上述内容,我使用score: {$lt: lastScore}
,因此在下一次迭代中,将找不到最新记录(0不小于 lastScore ,也是0)。所有具有相同分数的记录都会出现此问题。
您是否有关于如何实施分页的建议,使用Mongoose的分数排序?
PS:快速解决方案是使用.skip()方法,但对于大型集合并不是很好,我需要一个可扩展的解决方案
答案 0 :(得分:0)
使用.skip()方法加数,暂时没有其他解决方案。