MongoDB无限滚动排序结果

daL*_*ard 5 mongodb ruby-on-rails-3

我在尝试实现以下目标时遇到问题:

我想要一个具有“无限”滚动功能的页面,并且所有获取的结果都按某些属性进行排序。代码当前的工作方式是,它放置查询、对结果进行排序并显示它们。问题是,一旦用户到达页面底部并放置新查询,该查询的结果就会被排序,但在其自己的上下文中。也就是说,如果总共有 100 个结果,而第一个查询仅显示 50 个,那么它们将被排序。但下一个查询(接下来的 50 个)仅根据这 50 个结果对结果进行排序,而不是根据 100 个(总结果)。

那么,我是否必须一次获取所有结果,对它们进行排序,然后对它们应用一些分页逻辑,还是有办法让 MongoDB 实际上具有无限滚动(AJAX 请求)并将排序应用于结果?

Kev*_*vin 1

首先我要说的是,我没有使用 MongoDB 的经验(尽管我知道它是一个 NoSQL 数据库)。

然而,这个问题在某种程度上是一个通用的数据库问题(您可能会得到更多将其标记为此类的回复)。我已经使用 Cassandra(另一个完全不同的 NoSQL 数据库)实现了这样的功能,但是同样的原则也适用。

使用最后检索的记录的排序依据属性,并基于它在数据库中进行范围搜索。因此,假设您的数据库由以下字母组组成:

A
B
C
D
E
F
G
Run Code Online (Sandbox Code Playgroud)

..并且您一次检索 2 个字母,您会A, B先检索。当需要更多记录时,您可以使用 B 对数据库中的字母集进行范围搜索。用简单的英语来说,这会是这样的:

获取 后面出现的字母B,将结果限制为 2

从 MongoDB 教程的简要浏览来看,看起来您有条件运算符来帮助您实现这一点。