MongoDB countDocuments() 正在返回一个对象,而不是一个数字

gar*_*son 1 mongoose mongodb

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

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

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

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

Tom*_*ert 5

这是因为的返回值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);
Run Code Online (Sandbox Code Playgroud)

或者:

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