想象一下当客户端有限制为 10 的对象提要时的情况。
当需要下 10 个时,它会发送跳过 10 个并限制 10 个的请求。
但是如果自第一次请求偏移量 == 0 以来有一些新对象被添加(或删除)到集合中怎么办。
然后在第二次请求(偏移量 == 10)响应可能有错误的对象顺序。
按创建时间排序在这里不起作用,因为我有一些提要是通过一些数字字段排序形成的。
最佳答案
您可以添加时间字段,例如 created_at 或 updated_at。它必须在创建或修改文档时更新,并且该字段必须是唯一的。
然后使用 $gte 和 $lte 以及在此时间字段上的排序查询数据库的时间范围。
这确保了在时间窗口之外所做的任何更改都不会反射(reflect)在分页中,前提是时间字段没有重复项。如果您包含 microtime,很可能不会发生重复。
关于node.js - MongoDB API 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41614518/