获取集合Mongodb中文档数的计数

获取集合Mongodb中文档数的计数,mongodb,mongodb-query,Mongodb,Mongodb Query,是否有办法在单个查询中列出每个集合的所有集合名称和文档计数 我能找到的那个只给出了特定集合的计数。 例如,如果Users是一个集合,那么 db.Users.count() 请告诉我shell中集合用户中的文档数,您只需执行以下操作: db.getCollectionNames().map(函数(名称){ 返回{“name”:name,“count”:db[name].count()} }) 没有“命令”,也没有“单一”集合查询(技术上仍然是对每个集合进行多个查询,还有一个“源”查询),因为M

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

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

db.Users.count()

请告诉我shell中集合
用户

中的文档数,您只需执行以下操作:

db.getCollectionNames().map(函数(名称){
返回{“name”:name,“count”:db[name].count()}
})

没有“命令”,也没有“单一”集合查询(技术上仍然是对每个集合进行多个查询,还有一个“源”查询),因为MongoDB存储数据的方式不是这样的。但是有一种简单的编程方法,基本上所有驱动程序都可以使用。

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

db.getCollectionNames().forEach(function(colName){
  print(colName+": "+db.collection(colName).count());
});
如果您想将其用于任何其他操作,则可以使用map函数

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

不,没有。你必须使用

var collections=db.runCommand({
列表集合:1,
筛选器:{name:{$not:/^system\..*/}
})
获取用户创建的所有集合并迭代这些集合

for(var index=0;index
因此查询将是
db.getCollectionNames.map()
?@Vaulstein
db.getCollectionNames()
本身就是一个函数,它执行一个系统命令来返回“收集信息”。结果是一组适合JavaScript中
.map()
运算符的条件。你应该在这里“看清楚”
.count()
对返回的每个集合运行。这就是“它的工作原理”。正如我所说,每个驱动程序中都有相同的返回“收集信息”的命令。为什么要进行向下投票?只是好奇。所有其他解决方案包括
system.indexes
,使用
map
也可以有效地触发多个查询。