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

时间:2012-04-09 11:27:41

标签: ajax node.js mongodb mongoose infinite-scroll

我有mongodb和NodeJs。连接通过mongoosejs完成。
开发ajax无限滚动的最佳方法是什么?我应该使用限制和抵消吗?

1 个答案:

答案 0 :(得分:33)

当您在数据集中进行远程分页时,

“跳过和限制”方法效率不高。它实际上是Shlemiel the Painter's algorithm

范围查询效率更高(当索引支持时)。例如,让我们假设您正在显示推文。您的页面大小为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上有索引)。

您明白了:加载页面时,请记下上一条推文的时间戳,并用它来查询下一页。