一尘不染

用MongoDb和Nodejs进行Ajax分页的最佳方法是什么?

node.js

我有mongodb和NodeJs。通过mongoosejs完成连接。
开发Ajax Infinity滚动的最佳方法是什么?我应该使用极限和偏移量吗?


阅读 180

收藏
2020-07-07

共1个答案

一尘不染

当您对数据集进行分页时,“跳过并限制”方法不是很有效。它实际上是Shlemiel
Painter的算法

范围查询效率更高(当索引支持时)。例如,假设您正在显示推文。您的页面大小是20,您在第1000页上,并且想要加载第1001页。

这个查询

db.tweets.find().sort({created_at: -1}).skip(1001*20).limit(20)

小于有效

db.tweets.find({created_at: {$lt: last_displayed_date}}).
          sort({created_at: -1}).limit(20);

(只要您在上拥有索引created_at)。

您有个主意:加载页面时,记下最后一条推文的时间戳,并用它来查询下一页。

2020-07-07