【问题标题】:How to count the number of documents in a mongodb collection如何计算 mongodb 集合中的文档数
【发布时间】:2014-11-03 17:55:34
【问题描述】:

我想知道如何计算集合中的文档数。我试过了

var value = collection.count();
&&
var value = collection.find().count()
&&
var value = collection.find().dataSize()

我总是得到未定义的方法。

你能告诉我用什么方法来查找集合中的总文档吗?

【问题讨论】:

  • 第二个应该可以工作...当这是 mongo shell 时,您可能必须在您的集合前面加上 db.,如下所示:db.collection.find().count()
  • 它不喜欢count()。我收到以下错误 - Ganesh TypeError: undefined is not a function at C:\software\Enide-Studio\workspace\nodeexpress-mongo\node_modules\mongodb\lib\mongodb\collection\commands.js:55:5 at C: \software\Enide-Studio\workspace\nodeexpress-mongo\node_modules\mongodb\lib\mongodb\db.js:1183:7
  • 我认为这种方式更适合特定的收藏:stackoverflow.com/a/69168420/7399485

标签: mongodb


【解决方案1】:

使用命令遍历collection所在的数据库:

use databasename;

然后对数据库中的collection 调用count() 函数。

var value = db.collection.count();

然后是print(value) 或简单的value,将为您提供名为collection 的集合中的文档数。

参考:http://docs.mongodb.org/v2.2/tutorial/getting-started-with-the-mongo-shell/

【讨论】:

  • 您要查找的收集计数直接在 mongo shell 中调用为 db.salary.count() 它将返回计数。
【解决方案2】:

如果您想要一个集合中的文档数量,请使用count 方法,该方法返回一个 Promise。这是一个例子:

let coll = db.collection('collection_name');
coll.count().then((count) => {
    console.log(count);
});

这假设您使用的是 Mongo 3。

编辑:在 4.0.3 版本中,count 已弃用。使用countDocument 实现目标。

【讨论】:

    【解决方案3】:

    v4.0.3 开始,您可以使用以获得更好的性能:

    db.collection.countDocuments()
    

    【讨论】:

    • 请注意,这仍然不是一个高性能操作。 CountDocuments 会进行完整的集合扫描,并且是对大型集合的昂贵查询,可能会导致潜在的巨大 I/O 峰值。
    【解决方案4】:

    你可以简单地使用

          Model.count({email: 'xyz@gmail.com'}, function (err, count) {
          console.log(count);
        });
    

    【讨论】:

      【解决方案5】:

      在单行中执行 Mongo shell 命令以获得更好的结果。

      获取 mongodb 中所有文档的计数

      var 文档计数 = 0; db.getCollectionNames().forEach(function(collection) { documentCount++; }); print("可用文档数:"+ documentCount);

      输出: Available Documents count: 9

      获取集合中所有文档结果的计数

      db.getCollectionNames().forEach(function(collection) { resultCount = db[collection].count(); print("结果计数" + collection + ": "+ resultCount); });

      输出:

      Results count for ADDRESS: 250 
      Results count for APPLICATION_DEVELOPER: 950
      Results count for COUNTRY: 10
      Results count for DATABASE_DEVELOPER: 1
      Results count for EMPLOYEE: 4500
      Results count for FULL_STACK_DEVELOPER: 2000
      Results count for PHONE_NUMBER: 110
      Results count for STATE: 0
      Results count for QA_DEVELOPER: 100
      

      获取集合中所有文档的dataSize

      db.getCollectionNames().forEach(function(collection) { size = db[collection].dataSize(); print("dataSize for " + collection + ":"+ size); });

      输出:

      dataSize for ADDRESS: 250 
      dataSize for APPLICATION_DEVELOPER: 950
      dataSize for COUNTRY: 10
      dataSize for DATABASE_DEVELOPER: 1
      dataSize for EMPLOYEE: 4500
      dataSize for FULL_STACK_DEVELOPER: 2000
      dataSize for PHONE_NUMBER: 110
      dataSize for STATE: 0
      dataSize for QA_DEVELOPER: 100
      

      【讨论】:

        【解决方案6】:

        通过 MongoDB 控制台,您可以查看集合中的文档数量。

        1.转到 mongoDB 控制台并发出命令“使用数据库名称”。 要启动控制台,请转到安装 MongoDB 的 bin 文件夹,然后单击 mongo.exe 启动 mongoDB 控制台 例如,如果数据库是 myDB,那么命令是“use myDB

        2.执行这个命令db.collection.count() 集合就像 RDBMS 中的表。 例如,如果您的集合名称是 myCollection,那么命令是 db.myCollection.count();

        此命令将在控制台中打印集合的大小。

        【讨论】:

          【解决方案7】:

          db.collection('collection-name').count() 现已弃用。 我们现在应该使用countDocuments()estimatedDocumentCount(),而不是count()。 这是一个例子:

          `db.collection('collection-name').countDocuments().then((docs) =>{
          console.log('Number of documents are', docs);
              };`
          

          要了解更多信息,请阅读文档:

          https://docs.mongodb.com/manual/reference/method/db.collection.countDocuments/

          https://docs.mongodb.com/manual/reference/method/db.collection.estimatedDocumentCount/

          【讨论】:

            【解决方案8】:
            db.collection.count(function(err,countData){
            
            //you will get the count of number of documents in mongodb collection in the variable 
            countdata
            
            });
            

            在集合的地方给出你的 mongodb 集合名称

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-07-10
              • 1970-01-01
              • 2012-02-17
              • 1970-01-01
              相关资源
              最近更新 更多