使用 Mongoose 查找和计数集合元素

新手上路,请多包涵

在 Mongoose 中,我需要在集合中查找元素并对其进行计数,并同时获取查找和计数的结果。我努力了

Model.find().count(function (err, count) {
    // Get count, but cannot get results of find
});

有没有办法在不调用两次的情况下同时获得 find() 和 count() ?

原文由 Marc Bacvanski 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 810
2 个回答

您可以使用返回数组的长度:

 Model.find().exec(function (err, results) {
  var count = results.length

});

原文由 Gergo 发布,翻译遵循 CC BY-SA 3.0 许可协议

不幸的是,你必须做 2 个单独的查询。费斯托的答案只有在数据库中的元素少于限制时才有效。

 var countQuery = Model.count();
var findQuery = Model.find().limit(2);

countQuery.exec(function (e, count) {
  console.log('count', count); // can be more than 2, this is not calculated, mongo stores this value internally
})
findQuery.exec(function(e, data) {
  console.log('found items', data); // will be 2 or less elements
});

原文由 user1695032 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题