Paginate自动加载MongoDB

时间:2014-07-25 18:06:12

标签: php mysql mongodb

好的,所以我知道如何在MySQL中这样做,但我不确定如何在MongoDB中这样做

我只需要显示20个项目,但是当用户滚动到页面末尾以加载更旧的项目时

MYSQL中的

$results = $mysqli->query("SELECT id,name,message FROM paginate ORDER BY id ASC LIMIT $position, $items_per_group");

但在MongoDB中限制某事很容易->limit(20) 但是我如何变老[{1}}然后加载最后_id

BTW:这是我正在测试的网站代码我将逐步使用simular编码

http://www.sanwebe.com/2013/05/auto-load-records-on-page-scroll

但是我将使用MongoDB而不是Mysql

2 个答案:

答案 0 :(得分:0)

您可以使用$lt运算符查询年龄为_id的文档。这将返回在last_id之前插入的文档。

db.collection.find( { _id: { $lt: last_id } } ).limit(20)

答案 1 :(得分:0)

您可以对结果进行排序,然后跳过第一个n * 20结果,其中n是用户到达页面底部的次数,然后将结果限制为20.所以你要保留一个计数器对于n并执行如下查询:

var n = 0;
db.paginate.find({}, { "name" : 1, "message" : 1 }).sort({ "_id" : -1).skip(n).limit(20);
n++;
...

但是,如果我建议,每20个项目运行此查询可能会很昂贵。您可能想要获取更大批量的项目,比如200,将它们存储在客户端上的文档数组中,然后根据需要绘制它们。此外,Airbnb的Infinity.js等图书馆非常擅长绘制这些无限卷轴。你可能想看看它们。