获取Collection Mongodb中的文档数量

时间:2015-08-10 09:41:59

标签: mongodb mongodb-query

有没有办法在单个查询中列出每个集合的所有集合名称和文档计数?

我能找到的那个只给出了特定集合的计数。 例如,如果Users是一个集合,那么

db.Users.count()

会给我计算集合Users中的文档数量。

3 个答案:

答案 0 :(得分:7)

在shell中你需要做的就是:

db.getCollectionNames().map(function(name) { 
    return { "name": name, "count": db[name].count() } 
})

没有"命令"并且没有"单数"集合查询(技术上仍然是为每个集合进行多次查询,以及" source"查询)来执行此操作,因为这不是MongoDB存储数据的方式。但是有一种简单的程序方法,这基本上也适用于所有司机。

答案 1 :(得分:2)

如果您只想打印数字和计数,那么您可以使用forEach。

db.getCollectionNames().forEach(function(colName){
  print(colName+": "+db.collection(colName).count());
});

如果要将其用于任何其他操作,则可以使用地图功能。

db.getCollectionNames().map(function(colName){
  return {
    "columnName":colName,
    "count":db.getCollection(colName).count()
  }
});

答案 2 :(得分:-1)

不,没有。你必须使用

var collections = db.runCommand({
  listCollections:1,
  filter:{ name:{ $not: /^system\..*/ } }
})

获取用户创建的所有集合并迭代这些集合

for (var index = 0; index < collections.length; index++) {
    var current = collections[index];
    var doccount = db.runCommand({collStats:current,scale:1024,verbose:true}).count;
    print(current + ":" + doccount);
}