MongoDB REST API动态数据分页

时间:2017-01-15 17:17:16

标签: mongodb rest express mongoose

我正在使用Express和Mongoose实现REST API。我遇到了一项任务,要为具有大量文档的集合分页结果。 Document是一个社交媒体帖子,其中包含以下字段: created_at updated_at 得分

使用限制和页码的普通分页实现不起作用,因为数据的性质。用户浏览结果时可以删除或添加帖子。

我可以按照MongoDB文档中的建议实现基于范围的分页。 页面 created_at 值中的最后一项可用于查询下一页。

Post.find({ created_at: { $gt: req.query.next } })

但是,如果我想通过得分对结果进行排序,这不是唯一的或所有得分都相同?

2 个答案:

答案 0 :(得分:0)

有多种方法可以做到这一点,但在您的情况下,我建议动态创建查找/排序条件并在查找语句中使用它们。

离开我的脑袋只是为了给你一个想法:

var MyFilter = {};
var MySort = {};
if (req.query.created_at != undefined) {
    MyFilter = { created_at : { $gte : req.query.created_at) } };
}

if (req.query.sortOn != undefined){
    MySort = { req.query.sort : 1 };
}

Post.find(MyFilter)
.sort(MySort)
.exec(function (err, posts) {
    ===do your stuff===
});

答案 1 :(得分:0)

https://groups.google.com/forum/#!searchin/mongodb-user/paging%7Csort:relevance/mongodb-user/_Jrv9vI1lDE/Wg0eGV2AkZYJ

我刚刚在google群组中找到了相同的主题,并提供了完美的答案。