有没有办法知道MongoDB中是否有更多可用于分页的文档?

时间:2017-03-10 08:02:35

标签: node.js mongodb pagination

我正在用MongoDB编写Node.JS应用程序。我需要实现的一件事是列出对象。由于this answer,我已经使用skip()limit()函数实现了分页:

myModel.find()
  .skip(offset)
  .limit(limit)
  .exec(function (err, doc) {
     // do something with objects
  })

问题是,我希望我的端点返回元数据,我需要的一个字段是一个布尔值,表示是否有更多的对象可以加载。

实现这一目标的最简单方法是只加载一个对象(以确定是否有更多对象要显示)并且不向用户显示它,如下所示:

 myModel.find()
  .skip(offset)
  .limit(limit + 1)
  .exec(function (err, doc) {
    var moreAvailable; // are there more documents? 
    if (doc.length > limit) {
      moreAvailable = true;
      doc.length = limit; // don't show the last object to the user
    } else {
      moreAvailable = false;
    }


  })

但我很确定应该有更聪明的方法来做到这一点。是吗?

1 个答案:

答案 0 :(得分:0)

使用db.collection.find(<query>).count() https://docs.mongodb.com/manual/reference/method/cursor.count/

var total = db.collection.find(<query>).count();
var is_more = total > skip + limit;