什么是与MongoDb和Nodejs的Ajax分页的最佳方式是什么?
我有mongodb和NodeJs。 连接是通过mongoosejs完成的。
开发Ajax无限滚动的最佳方法是什么? 我应该使用限制和抵消?
当您将数据分页到数据集中时,“跳过和限制”方法效率不高。 这是一个有效的Shlemiel画家的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
上有索引)。
您会明白:在加载页面时,请记下最后一条推文的时间戳,并用它来查询下一页。