MongoCursor使用PHP定位无限滚动应用程序

时间:2013-08-05 23:56:04

标签: php mongodb mongodb-php

我需要进行无限滚动的REST API调用。我有一个通用的方法,但我似乎无法找到正在尝试完成的正确语法。从本质上讲,Web-App给我打电话来获取帖子列表,这很简单。现在用户滚动了我加载的前100个。现在,如何让MongoCursor从我离开的地方开始?

我是否应该将应用发送给int并返回该应用,我只是做$cursor->find()->skip($x)

我在想,不知怎的,我将应用程序发送到我的光标,然后当它准备好获得更多结果时它会将光标发回,我只是重新连接它并继续?

我找到了这个教程 - http://artsy.github.io/blog/2013/02/15/infinite-scroll-with-mongodb/,但我似乎无法掌握他们发送的参数以及原因?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  

我找到了这个教程 -   http://artsy.github.io/blog/2013/02/15/infinite-scroll-with-mongodb/   但我似乎无法掌握他们发送的参数和原因?

分页和无限滚动最好使用范围查询来实现,您引用的博客文章对此进行了演示。跳过和限制在概念上很简单,如果我们只处理几页,实际上很好,但随着页数增加到数百页,性能开始急剧下降。

当您使用跳过发出查询(希望索引)时,MongoDB需要转到第一个结果并向前“跳过”次数。对于索引查询,这意味着遍历索引,该索引可能不完全在内存中。将此与不使用skip的范围查询进行对比,其中我们的标准请求的数据大于或小于我们上次看到的数据,MongoDB能够直接跳到第一个结果,我们只需要遍历“限制”文档。

以下答案和博客文章更详细地解释了这个主题: