【发布时间】:2016-02-06 08:26:14
【问题描述】:
我需要在我的mongodb 集合中实现分页。这是我收藏中的文档示例
{
"_id" : "<Mongo Generated>",
"category" : "abc",
"createdDate" : "<Date of creation of the document>",
"markedDate" : "<Date when the document is marked
(marking is an activity that is done via my application>"
}
这是我的要求:
- 我需要检索“
abc”类别中的所有文档,但是每页包含 10 个文档 - 只有在文档排序后才能进行分页 - 我必须先按
markedDate(降序)对文档进行排序,然后是createdDate(降序) - 应应用 10 个结果的限制
- 我应该能够根据输入中的页码跳到任何页面
我尝试执行以下查询以使用聚合对结果进行排序:
db.getCollection('testcollection').aggregate(
{$match:{"category" : "abc"}},
{$sort:{markedDate: -1, createdDate : -1}
})
但是,我该如何分页?我可以使用跳过 + 限制选项,但是在发布此问题之前我浏览了一些帖子,不建议将其用于大型数据集。我预计我的收藏有大约 75000 个文档。
此外,由于我的日期是以 ISO 日期格式存储的,因此我发现可见性仅为秒级。我可能同时创建了 2 个文档。
在不影响性能的情况下分页结果的最佳方式是什么?
请指教。
【问题讨论】: