我需要进行无限滚动的REST API调用。我有一个通用的方法,但我似乎无法找到正在尝试完成的正确语法。从本质上讲,Web-App给我打电话来获取帖子列表,这很简单。现在用户滚动了我加载的前100个。现在,如何让MongoCursor
从我离开的地方开始?
我是否应该将应用发送给int
并返回该应用,我只是做$cursor->find()->skip($x)
?
我在想,不知怎的,我将应用程序发送到我的光标,然后当它准备好获得更多结果时它会将光标发回,我只是重新连接它并继续?
我找到了这个教程 - http://artsy.github.io/blog/2013/02/15/infinite-scroll-with-mongodb/,但我似乎无法掌握他们发送的参数以及原因?
提前感谢您的帮助!
森
答案 0 :(得分:0)
我找到了这个教程 - http://artsy.github.io/blog/2013/02/15/infinite-scroll-with-mongodb/ 但我似乎无法掌握他们发送的参数和原因?
分页和无限滚动最好使用范围查询来实现,您引用的博客文章对此进行了演示。跳过和限制在概念上很简单,如果我们只处理几页,实际上很好,但随着页数增加到数百页,性能开始急剧下降。
当您使用跳过发出查询(希望索引)时,MongoDB需要转到第一个结果并向前“跳过”次数。对于索引查询,这意味着遍历索引,该索引可能不完全在内存中。将此与不使用skip的范围查询进行对比,其中我们的标准请求的数据大于或小于我们上次看到的数据,MongoDB能够直接跳到第一个结果,我们只需要遍历“限制”文档。
以下答案和博客文章更详细地解释了这个主题: