首页 > 解决方案 > MongoDB countDocuments() 正在返回一个对象,而不是一个数字

问题描述

我开始学习 mongoose/MongoDB 聚合函数,并且遇到了一些基本的困难。例如,我正在尝试执行以下操作:

var myModels= require('./models/myModel');
var myCount = myModels.countDocuments({userID: "A"});
console.log(myCount );

我只想计算用户 ID 为“A”的文档数量,但是当它打印到控制台时,它作为一个整体对象打印,而不仅仅是一个数字计数。我已经在这里阅读了答案,但我仍然无法解决这个问题(另外,与那个问题不同,有没有一种方法可以直接返回计数,而不必预定义变量并将其设置在回调函数中?)

我正在尝试按照此处的指南进行操作,但看不到哪里出错了。

标签: mongodbmongoose

解决方案


这是因为的返回值countDocuments是一个承诺,而不是一个数字。

您要么需要等待该 Promise,要么使用如下回调语法:

var myModels= require('./models/myModel');
// this required the code to be inside an async function
var myCount = await myModels.countDocuments({userID: "A"}); 
console.log(myCount);

或者:

var myModels= require('./models/myModel');
myModels.countDocuments({userID: "A"})
     .then((myCount) =>{console.log(myCount);}); 

推荐阅读