好的,所以我知道如何在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
答案 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等图书馆非常擅长绘制这些无限卷轴。你可能想看看它们。