【问题标题】:MongoCursor Positioning Infinite Scroll Application with PHPMongoCursor 使用 PHP 定位无限滚动应用程序
【发布时间】:2013-08-05 23:56:03
【问题描述】:

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

我是否向应用发送int,然后他们返回,我只需发送$cursor->find()->skip($x)

我想以某种方式将我的光标发送给应用程序,然后当它准备好获得更多结果时它会将光标发送回来,我只是重新连接它并继续?

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

提前感谢您的帮助!

内森

【问题讨论】:

  • 你基本上已经知道了......,skip 到当前的起始索引(一个整数),你可能希望limit 只检索“页面”的数据。或者,根据您的数据,如果您可以对字段进行排序并始终在显示的最后一个值上执行$gt,那将非常有效。
  • '这是重复的。希望我在做这个之前找到那个帖子。谢谢,@WiredPrairie

标签: php mongodb mongodb-php


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多