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