我有mongodb和NodeJs。通过mongoosejs完成连接。 开发Ajax Infinity滚动的最佳方法是什么?我应该使用极限和偏移量吗?
当您对数据集进行分页时,“跳过并限制”方法不是很有效。它实际上是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)。
created_at
您有个主意:加载页面时,记下最后一条推文的时间戳,并用它来查询下一页。