【发布时间】:2018-02-15 18:07:39
【问题描述】:
我有 mongodb 和 NodeJs。连接是通过mongoosejs 完成的。
开发ajax无限滚动的最佳方法是什么?我应该使用限制和偏移吗?
【问题讨论】:
标签: ajax node.js mongodb mongoose infinite-scroll
我有 mongodb 和 NodeJs。连接是通过mongoosejs 完成的。
开发ajax无限滚动的最佳方法是什么?我应该使用限制和偏移吗?
【问题讨论】:
标签: ajax node.js mongodb mongoose infinite-scroll
当您对数据集进行分页时,“跳过和限制”方法效率不高。它实际上是一个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 上有索引)。
你明白了:当你加载一个页面时,记下最后一条推文的时间戳,并用它来查询下一页。
【讨论】:
created_at: -1, user_id: 1排序
event_date, event_id订购。