有没有办法在单个查询中列出每个集合的所有集合名称和文档计数?
我能找到的那个只给出了特定集合的计数。
例如,如果Users
是一个集合,那么
db.Users.count()
会给我计算集合Users
中的文档数量。
答案 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);
}