我有一个包含数千个文档的集合。当用户登录时,我会发布该用户有权访问的40个最新文档,并将其显示在列表中。
用户可以单击其中一个文档以在新视图中播放它们。这样做的时候,我想曝光以前的&下一步按钮,加载列表中的下一个文档。
用户可以对任何选定密钥上的文档列表进行排序,例如title
,date
,username
。因此,next / prev文档取决于列表的当前排序顺序。
此外,用户可以手动输入URL来播放文档,因此next / prev文档可能不属于40个最新文档。这意味着我们需要一种机制来有效地确定服务器端的next / prev。
一些警告:
我无法使用$gte
或$lte
和limit: 1
发布next / prev文档,因为某些文档的某些键具有相同的值,例如{ {1}},并且在按下' next'时最终将重新发布相同的文档,从而有效地结束循环。即使我们使用二级排序也是如此。
出于性能原因,我不想发布整个列表。
我不想从数据库中查询整个集合,通过循环遍历数组找到当前文档的位置,并返回下一个和上一个文档,只是因为有可能成千上万的文档和用户可能想快速按下下一个按钮很多次,所以这太慢了。
一种解决方案是发布整个列表,但只发布username
字段而不是其他内容。这可以解决排序问题,但对速度没有帮助:我希望完整发布的下一个/上一页文档,以便在后台加载,以便在文档之间更快地导航。
你会建议什么?