如何用猫鼬做分页

时间:2012-09-22 09:34:26

标签: node.js mongodb express mongoose

我想在我的收藏中制作一个分页功能。如何找到具有“开始”和“限制”位置的文档并在单个查询中获取总文档编号?

4 个答案:

答案 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);