我正在使用node.js编写服务器端代码,我试图使用无效的count方法获取MongoDB集合大小。
这是我的代码
var mongo = require('mongodb');
var host = "127.0.0.1";
var port = mongo.Connection.DEFAULT_PORT;
function getStock(name, callback) {
var db = new mongo.Db("testDB", new mongo.Server(host, port, {}));
db.open (function(error){
console.log("We are connected! " + host + ":" +port);
db.collection("stocks", function(error, collection){
console.log("We have a collection");
**var numOfDocs = db.collection('stocks').count()**
**console.log("The num of Docs in our collection is: ",numOfDocs)**
collection.find({"name":name.toString()}, function(error, cursor) {
cursor.toArray(function(error, stocks) {
if (stocks.length==0) {
//console.log("No Stocks found!");
callback(false);
}
else {
callback(stocks[0]);
//console.log("Found a stock -> ",stocks[0]);
}
});
});
});
});
}
答案 0 :(得分:4)
.count()
是一个异步函数,就像.find()
一样。
请尝试以下代码:
collection.count({}, function(error, numOfDocs) {
console.log('I have '+numOfDocs+' documents in my collection');
// ..
});
.count()
的第一个参数应该是搜索查询。由于您要计算所有文档,因此我将空对象{{1}}作为搜索查询传递。
答案 1 :(得分:0)
自mongo 4起,count()
被弃用。您应该改用countDocuments()
:
与4.0功能兼容的MongoDB驱动程序已弃用 各自的游标和集合count()API,而推荐使用新的API countDocuments()和estimatedDocumentCount()。对于特定的API 给定驱动程序的名称,请参阅驱动程序文档。
db.orders.countDocuments({})