Node.js 有没有办法知道MongoDB中是否有更多文档可供分页?

Node.js 有没有办法知道MongoDB中是否有更多文档可供分页?,node.js,mongodb,pagination,Node.js,Mongodb,Pagination,我正在用MongoDB编写Node.JS应用程序。我需要实现的事情之一是对象列表。由于以下原因,我已经使用skip()和limit()函数实现了分页: 问题是,我希望我的端点返回元数据,我需要的字段之一是表示是否有更多对象可以加载的布尔值 实现这一点最简单的方法是只加载一个或多个对象(以确定是否有更多对象要显示),而不向用户显示,类似于: myModel.find() .skip(offset) .limit(limit + 1) .exec(function (err, doc)

我正在用MongoDB编写Node.JS应用程序。我需要实现的事情之一是对象列表。由于以下原因,我已经使用
skip()
limit()函数实现了分页:

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

实现这一点最简单的方法是只加载一个或多个对象(以确定是否有更多对象要显示),而不向用户显示,类似于:

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


  })

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

使用
db.collection.find().count()

var total=db.collection.find().count();
var是_more=总计>跳过+限制;

尽量避免计数!使用查询时,Count的效率极低,即使在匹配索引时,其行为也不稳定。在MongoDB中,请求一个额外的对象是处理分页的最有效方法。我在尝试使用count进行此操作时遇到了很多问题(性能方面)(这在SQL数据库中几乎是标准的),而对同一查询的skip+限制非常快。除非您需要确切地知道有多少页,否则这将是一个足够的解决方案。
 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;
    }


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