我想在我的收藏中制作一个分页功能。如何找到具有“开始”和“限制”位置的文档并在单个查询中获取总文档编号?
答案 0 :(得分:18)
您无法在一个查询中获得两个结果;你能做的最好的事情就是使用一个Mongoose Query
对象来获取它们:
var query = MyModel.find({});
query.count(function(err, count) {...});
query.skip(5).limit(10).exec('find', function(err, items) {...});
如果需要,使用像async
这样的流控制框架来并行地干净地执行它们。
答案 1 :(得分:7)
您可以使用插件Mongoose Paginate:
$ npm install mongoose-paginate
在你的路线或控制器之后,只需添加:
Model.paginate({}, { page: 3, limit: 10 }, function(err, result) {
// result.docs
// result.total
// result.limit - 10
// result.page - 3
// result.pages
});
答案 2 :(得分:3)
如果您计划拥有大量页面,则不应使用跳过/限制,而应计算范围。
请参阅Scott对类似问题的回答:MongoDB - paging
答案 3 :(得分:0)
user.find({_id:{$nin:friends_id},_id:{$ne:userId}},function(err,user_details){
if (err)
res.send(err);
response ={
statusCode:200,
status:true,
values:user_details
}
res.json(response);
}).skip(10).limit(1);