13
我有mongodb和NodeJs。连接通过mongoosejs完成。
开发ajax无限滚动的最佳方式是什么?我应该使用限制和抵消?使用MongoDb和Nodejs进行ajax分页的最佳方式是什么?
我有mongodb和NodeJs。连接通过mongoosejs完成。
开发ajax无限滚动的最佳方式是什么?我应该使用限制和抵消?使用MongoDb和Nodejs进行ajax分页的最佳方式是什么?
当您远离数据集进行分页时,“跳过并限制”方法效率不高。它实际上是一个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
)。
您明白了:在加载页面时,请记下最后一条推文的时间戳,并用它来查询下一页。
如果有不同用户同时创建了一些推文,但我需要显示他们呢? – 2012-04-09 11:55:08
完全一样的毫秒?我不这么认为。 – 2012-04-09 11:55:50
如果是这样的话,按'created_at:-1,user_id:1'排序# – 2012-04-09 11:56:31