猫鼬:从特定位置获取文档

时间:2020-11-12 15:38:28

标签: node.js mongodb mongoose

当前,我正在处理新闻提要,并希望在用户向下滚动列表时获取更多数据。最初,我从服务器中获取了按日期排序的特定数量的数据,例如->

    var newsFeed = await NewsFeed.find().sort({createdDate: 'desc'}).limit(parseInt(amount));

当用户知道到达列表的末尾时,我想通过简单地增加api调用中的amount变量来加载更多数据。通过当前的调用,我还将获得已经拥有的第一个元素。那么,是否有一种解决方案可以使前10个文档按日期和时间从11-20排序,依此类推?

1 个答案:

答案 0 :(得分:1)

如果您的文档已排序,则可以使用skip

例如,如果您有10个对象,例如:

{ id:1 }, { id:2 }, { id:3 }, { id:4 } , ... { id:n}

您可以通过这种方式查询所需的文档数量:

var find = await model.find({}).sort({id:1}).limit(amount)

然后,要获取下一个值,可以执行以下查询:

find = await model.find({}).sort({id:1}).skip(amount).limit(amount)

第一个find(假设数量为2)将返回id 1和2的文档。
第二个find将返回id 3和4。

还要检查this stack overflow questionthis docs from Mongo