首页 > 解决方案 > 如何使用 NodeJS/express JS 获取 MongoDB 中的文档数

问题描述

我正在尝试获取集合documents中的计数,MongoDB但我没有得到计数。

这是我正在尝试的:

//get the invoice count
Routes.route('/invoicescount').get((req, res) => {
  invoicesDB.count({}, (err, count) => {
    if (err) {
      res.status(400).send(err);
    } else {
      const c = count;
      res.status(200).send(c);
    }
  });
});

它没有给出任何值,但在控制台中它给出了这个错误:

发现错误:CastError:模型“invoices”的路径“_id”处的值“invoicescount”转换为 ObjectId 失败

标签: javascriptnode.jsmongodbexpress

解决方案


我正在使用此函数来获取每个集合的计数:

var MongoClient = require('mongodb').MongoClient;

var dbName = "myName";
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("collName", host, port, dbName, function(err, count) {
   if (err) {
       return console.log(err.message);
   }
   console.log('number of documents', count);
});

推荐阅读