![](/img/trans.png)
[英]How to count no. of documents in MongoDB collection using Node.Js ?
[英]MongoDB get the number of documents (count) in a collection using Node.js
我目前正在编写一个函数,该函数应该返回集合中的文档数,当我返回值时,它表示未定义,这是我的代码:
var MongoClient = require('mongodb').MongoClient;
// open the connection the DB server
var dbName = "ystocks";
var port = "27017";
var host = "localhost";
var tt = "mongodb://" + host + ":" + port + "/" + dbName;
//"mongodb://localhost:27017/ystocks"
function getNumOfDocs (collectionName, host, port, dbName) {
var tt = "mongodb://" + host + ":" + port + "/" + dbName;
count = 0;
MongoClient.connect(tt, function (error, db){
if(error) throw error;
collectionName = collectionName;
db.collection(collectionName).count({}, function(error, numOfDocs){
if (error) throw error;
//print the result
console.dir("numOfDocs: " + numOfDocs);
count = numOfDocs;
console.log("count is : " + count);
// close the DB
return numOfDocs;
db.close();
});// end of count
}); // Connection to the DB
//return count;
} // end of getNumOfDocs
var ee = getNumOfDocs ("stocks", "localhost", "27017", "ystocks");
console.log("ee is " + ee);
请帮我。
这是它应该是什么样子
var MongoClient = require('mongodb').MongoClient;
var dbName = "ystocks";
var port = "27017";
var host = "localhost";
function getNumOfDocs (collectionName, host, port, dbName, callback) {
MongoClient.connect("mongodb://" + host + ":" + port + "/" + dbName, function (error, db){
if(error) return callback(error);
db.collection(collectionName).count({}, function(error, numOfDocs){
if(error) return callback(error);
db.close();
callback(null, numOfDocs);
});
});
}
和用法
getNumOfDocs("stocks", host, port, dbName, function(err, count) {
if (err) {
return console.log(err.message);
}
console.log('number of documents', count);
});
请记住,如果您要多次调用此函数,最好只连接到数据库一次,然后使用相同的连接。
自 mongodb 4.0 起不推荐使用count() 。
相反,您应该使用documentCount()替代方案,但比具有大量数据的count()慢得多。
替代方案是estimatedDocumentCount() ,它表现得很好,用法是:
var MongoClient = require('mongodb').MongoClient;
var dbName = "ystocks";
var port = "27017";
var host = "localhost";
function getNumOfDocs (collectionName, host, port, dbName, callback) {
MongoClient.connect("mongodb://" + host + ":" + port + "/" + dbName, function (error, db){
if(error) return callback(error);
db.collection(collectionName).estimatedDocumentCount({}, function(error, numOfDocs){
if(error) return callback(error);
db.close();
callback(null, numOfDocs);
});
});
}
我使用的另一个选项是从集合 stats 中获取文档数:
var MongoClient = require('mongodb').MongoClient;
var dbName = "ystocks";
var port = "27017";
var host = "localhost";
function getNumOfDocs (collectionName, host, port, dbName, callback) {
MongoClient.connect("mongodb://" + host + ":" + port + "/" + dbName, function (error, db){
if(error) return callback(error);
db.collection(collectionName).stats(function(error, stats){
if(error) return callback(error);
db.close();
callback(null, stats.count);
});
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.