计算具有给定字段值问题的文档
Count documents with given field value problem
我有一个关于 db.collection.find.count()
的计数函数的 return 值的问题;即我的程序应该 return 整数值(db.collection
中的文档数按某些标准),但是函数 returns Promise
我不知道如何在回调中使用功能。
我尝试在 count()
方法中创建回调函数,如 count(function(err,res){ if(err) console.log('Error') else count1=res;})
,但它不起作用。我还搜索了 Whosebug 和 mongodb 文档,并尝试了一些其他解决方案,但也没有帮助。 (但是当我在 robomongo 中尝试 db.collection('blogCollection').find("author":"user123").count()
时,它正确地 运行 并显示了查询结果)
这是我的代码var count1=database.collection("blogCollection").find({"author":id}).count();
其中 count1
应该是 author
字段等于 id
值的文档数。在此先感谢您的帮助。:) 我的 mongodb 是 3.2 版本,node 是 v10.15.3.
承诺和回调具有不同的语法。您可以查看 Promise
的工作原理 here. You may also want to check the difference with callbacks here.
在你的情况下,你可以像这里一样使用 Promise
:
database.collection("blogCollection").find({"author":id}).count()
.then((count1) => {
console.log(count1);
});
您也可以选择使用 ES6 Async/Await:
async function count() {
const count1 = await database.collection("blogCollection").find({"author":id}).count();
console.log(count1);
}
注意function
前的async
,调用数据库函数前的await
你的代码中应该有多个回调,而不仅仅是在最后
参考这个Callback at MongoDB Operation With Node.js
以及节点驱动程序的计数功能不需要对游标进行操作http://mongodb.github.io/node-mongodb-native/3.2/api/Collection.html#count
所以你的代码应该看起来像
database.collection("blogCollection", (err, col) => {
col.count(query,opt, (err,count )=> count1 = count)
)
异步等待
const col = await database.collection("blogColelction")
const count1 = await col.count(query, opt)
我有一个关于 db.collection.find.count()
的计数函数的 return 值的问题;即我的程序应该 return 整数值(db.collection
中的文档数按某些标准),但是函数 returns Promise
我不知道如何在回调中使用功能。
我尝试在 count()
方法中创建回调函数,如 count(function(err,res){ if(err) console.log('Error') else count1=res;})
,但它不起作用。我还搜索了 Whosebug 和 mongodb 文档,并尝试了一些其他解决方案,但也没有帮助。 (但是当我在 robomongo 中尝试 db.collection('blogCollection').find("author":"user123").count()
时,它正确地 运行 并显示了查询结果)
这是我的代码var count1=database.collection("blogCollection").find({"author":id}).count();
其中 count1
应该是 author
字段等于 id
值的文档数。在此先感谢您的帮助。:) 我的 mongodb 是 3.2 版本,node 是 v10.15.3.
承诺和回调具有不同的语法。您可以查看 Promise
的工作原理 here. You may also want to check the difference with callbacks here.
在你的情况下,你可以像这里一样使用 Promise
:
database.collection("blogCollection").find({"author":id}).count()
.then((count1) => {
console.log(count1);
});
您也可以选择使用 ES6 Async/Await:
async function count() {
const count1 = await database.collection("blogCollection").find({"author":id}).count();
console.log(count1);
}
注意function
前的async
,调用数据库函数前的await
你的代码中应该有多个回调,而不仅仅是在最后
参考这个Callback at MongoDB Operation With Node.js
以及节点驱动程序的计数功能不需要对游标进行操作http://mongodb.github.io/node-mongodb-native/3.2/api/Collection.html#count
所以你的代码应该看起来像
database.collection("blogCollection", (err, col) => {
col.count(query,opt, (err,count )=> count1 = count)
)
异步等待
const col = await database.collection("blogColelction")
const count1 = await col.count(query, opt)