使用分页进行mongo排序

时间:2016-02-05 23:03:03

标签: mongodb sorting paging

我需要在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>"
}

这是我的要求:

  1. 我需要检索类别&#34; abc&#34;中的所有文档,但是每页10个文档的页面
  2. 只有在文档排序后才能进行分页 - 我必须先按markedDate(降序)排序文档,然后createdDate(降序)
  3. 应该应用10个结果的限制
  4. 我应该可以根据输入中的页码跳到任何页面
  5. 我尝试执行以下查询以使用aggregate对结果进行排序:

    db.getCollection('testcollection').aggregate(
       {$match:{"category" : "abc"}}, 
       {$sort:{markedDate: -1, createdDate : -1}
    })
    

    但是,我该怎么页?我可以使用skip + limit选项,但是在发布此问题之前我已经阅读了一些帖子,不推荐用于大型数据集。我期待我的收藏有大约75000份文件。

    此外,由于我的日期以ISO日期格式存储,因此我看到可见性仅为秒级。我可能在同一秒创建了2个文档。

    在不对性能产生影响的情况下,选择页面结果的最佳方式是什么?

    请告知。

1 个答案:

答案 0 :(得分:1)

如何直接使用排序功能

db.testcollection.find({}).sort({createdDate:-1}).skip(1).limit(10)