node.js - MongoDB API 分页

标签 node.js mongodb express mongoose mongoose-web-server

想象一下当客户端有限制为 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/

相关文章:

javascript - 为什么 MongoDb 游标可以像数组一样被索引?

node.js - Node js express请求天气API

javascript - 使用 jQuery Ajax 与 Node.js 和 Express 来验证发送电子邮件

javascript - 如何使用 mongoose 中的用户对象 id 数组返回文档数组?

json - 如何管理多个 JSON 模式文件?

javascript - dropCollection 不会删除集合

javascript - 具有多个值的 Mongo $addToSet 语法正确

node.js - 使用 Mongoose 和 Node.js 更新 MongoDB 中的数据

node.js - Mongoose – 将对象相互链接而不重复

node.js - 设备订阅 AWS IoT 上的主题