MongoDB REST API动态数据分页
我正在用Express和Mongoose实现RESTAPI。我的任务是为包含大量文档的集合对结果进行分页。文档是一个社交媒体帖子,其字段如下:created_at、updated_at和score 由于数据的性质,使用limit和page number的普通分页实现不起作用。当用户浏览结果时,可以删除或添加帖子 我可以按照MongoDB文档中的建议实现基于范围的分页。 按值创建的页面中的最后一项可用于查询下一页MongoDB REST API动态数据分页,mongodb,rest,express,mongoose,Mongodb,Rest,Express,Mongoose,我正在用Express和Mongoose实现RESTAPI。我的任务是为包含大量文档的集合对结果进行分页。文档是一个社交媒体帖子,其字段如下:created_at、updated_at和score 由于数据的性质,使用limit和page number的普通分页实现不起作用。当用户浏览结果时,可以删除或添加帖子 我可以按照MongoDB文档中的建议实现基于范围的分页。 按值创建的页面中的最后一项可用于查询下一页 Post.find({ created_at: { $gt: req.query.n
Post.find({ created_at: { $gt: req.query.next } })
但是,如果我想按分数对结果进行排序,而分数不是唯一的,或者所有分数都相同,该怎么办?有多种方法可以做到这一点,但在您的情况下,我建议动态创建查找/排序条件,并在find语句中使用它们 从我脑子里出来给你一个想法:
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===
});
我刚刚在谷歌群组中找到了同样的话题,并给出了完美的答案
您可以尝试在年龄和_id上创建一个复合索引,并按这两个字段排序以获得前三个文档。要获取后续用户集,查询应返回满足以下任一要求的文档:
- 与上一个文档具有相同的期限,并且具有更大的id 或
- 年事已高
db.collection.find({$or:[{age:lastAge,{$gt:lastID}},{age:{$gt:lastID}]})
Mongo
cursor.sort()
可以基于多个字段进行排序,例如我在一个问题中给出的。我找不到使它工作的钥匙组合。按创建的排序和分数没有区别。