方法一:主要是在linux命令行使用,受限于客户端显示的行数问题,可以使用以下方法,分批去获取集合信息。
var collectionNames= db.getCollectionNames();
for (var i = 0; i < 500; i++) {
var coll = db.getCollection(collectionNames[i]);
var stats = coll.stats(1024 * 1024);
print(collectionNames[i], ‘,’, db.getCollection(collectionNames[i]).count(), ‘,’, db.getCollection(collectionNames[i]).dataSize());
};
方法二:适合客户端工具上使用,直接查看完整的集合(适合客户端工具上使用,可以复制全部集合信息。
var collectionNames= db.getCollectionNames();
for (var i = 0; i < collectionNames.length; i++) {
var coll = db.getCollection(collectionNames[i]);
var stats = coll.stats(1024 * 1024);
print(collectionNames[i], ‘,’, db.getCollection(collectionNames[i]).count(), ‘,’, db.getCollection(collectionNames[i]).dataSize());
};
方法三:Linux导出到csv文件
创建并执行导出命令
mongo --quiet your_database --eval "
var collectionNames= db.getCollectionNames();
for (var i = 0; i < collectionNames.length; i++) {
var coll = db.getCollection(collectionNames[i]);
var stats = coll.stats(1024 * 1024);
print(collectionNames[i], ‘,’, db.getCollection(collectionNames[i]).count(), ‘,’, db.getCollection(collectionNames[i]).dataSize());
};
" > collection_stats.csv
方法四:核查前缀T_ABC_的集合信息
1)先过滤再loop(更优解)
var collectionNames = db.getCollectionNames();
// 添加前缀过滤
var filteredCollections = collectionNames.filter(function(collName) {
return collName.startsWith(“T_ABC_”);
});
for (var i = 0; i < filteredCollections.length; i++) {
var collName = filteredCollections[i];
var coll = db.getCollection(collName);
var stats = coll.stats(1024 * 1024);
// 优化:使用stats对象中的数据,避免重复调用 —可选。
print(collName, ‘,’, stats.count, ‘,’, stats.size);
}
2)循环内过滤
var collectionNames = db.getCollectionNames();
for (var i = 0; i < collectionNames.length; i++) {
**// 添加这行判断,判断集合名是否以T_ABC_开头,是的话继续否则跳过。 **
if (!collectionNames[i].startsWith(“T_ABC_”)) continue;
var coll = db.getCollection(collectionNames[i]);
var stats = coll.stats(1024 * 1024);
print(collectionNames[i], ‘,’, stats.count, ‘,’, stats.size);
}
学无止境,共同探索!




