我有一个快速变化的数据集,我正在实现无数的next / prev导航。数据变化足够快,基于数字偏移的查询不可靠。这里的传统解决方案是基于排序字段来偏移查询(例如:created_at> X)。但是,如果主要排序顺序不是非常精细,那么这种方法效果不佳。我有一个想法就是做一些事情:
... WHERE (nongranular = X AND granular > Y) OR nongranular > X ORDER BY ...
但是,我对在MongoDB中实现上述伪查询感到不满意:它基本上是2个单独的查询。
当主要排序不是粒度但次要排序顺序是粒度时,是否有更优雅的方法来实现有效的无数分页查询?
答案 0 :(得分:0)
如果您使用的是MongoDB,则可以使用_id: {$gt: last_bson_id}
。 The most significant bits of a BSON ID are a timestamp,最低有效位是序列号,可以轻松解决任何粒度问题。