2017-01-15 84 views
0

我正在使用Express和Mongoose实现REST API。我被困在一个任务中,以便为包含大量文档的集合分页。 Document是一个社交媒体文章,其中包含以下字段:created_at,updated_at得分MongoDB REST API动态数据分页

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

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

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

但是,如果我想到结果排序多少分这是不是唯一的或所有得分都是一样的吗?

+1

Mongo'cursor.sort()'可以根据多个字段排序 –

+0

例如,我给出了一个问题。我无法找到使其工作的关键组合。按created_at排序和分数没有区别。 – kestutisb

回答

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=== 
});