(在 MongoDB 中实现分页)
由于内存消耗,不建议对大型数据集使用基于跳过的分页。另一种分页方法是按 _id 字段使用自然顺序。然而,检索最后一个文档的 _id 对初学者来说是一个挑战。
(正向分页)**
正向分页涉及按顺序迭代页面,存储 _id
对于 _id 这样的自然顺序,过程很简单:
- 查找第一页:db.users.find().limit( pageSize)。
- 获取最后一个文档的_id:last_id = ....
- 查找下一页:users = db.users.find({'_id' > last_id} )。 limit(10);.
(非自然顺序)**
对于非自然顺序,例如排名,过程变得更加复杂:
-
在第一页,存储检索到的文档的_ids和lastSeen排名:
- var sawIds = [];, var lastSeen = null;
- 在遍历游标时存储 _id 并更新 lastSeen。
-
在后续页面上,排除已查看的 _id 并检索排名小于或等于 lastSeen 的文档:
- db.junk.find( {_id: { $nin: sawIds }, 排名: $lte: lastSeen } ).sort({ "rank": -1 }).limit(2 );
(注意事项)**
- 维护已看到的 _id 列表以排除后续页面上的结果。
- 存储lastSeen值并在排名变化时丢弃seen_ids(对于非自然顺序)。
以上是如何在 MongoDB 中实现最佳分页?的详细内容。更多信息请关注PHP中文网其他相关文章!