我正在用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;
}
})
但我很确定应该有更聪明的方法来做到这一点。是吗?
答案 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;