1 表结构导出
var tableNames = db.getCollectionNames();
tableNames.forEach(function(item){
var table = item ;
if(table.indexOf("indexes" == -1)){
var context = db[table].findOne();
print(table + " *************************");
for(var key in context){
var dataTypes;
if(context[key]==null){
dataTypes="String";
}else{
dataTypes=context[key].constructor.name;
}
print(key+","+dataTypes);
}
}
});
缺点:随机查询一条数据,解析单条数据名称、类型,值为null时默认为String类型,无法将mongodb表结构完整导出,对于规整的mongodb表此语句适用
2 检查索引
var tableNames = db.getCollectionNames();
tableNames.forEach(function(item){
var table = item ;
if(table.indexOf("xx") != -1 && table.indexOf("yy") != -1){
var indexNames = db[table].getIndexes();
var count = db[table].count();
if(indexNames.length==1){
var str = table + " No index , count : " + count;
print(str);
}
}
});
## 表名称过滤
var tableNames = db.getCollectionNames();
tableNames.forEach(function(item){
var table = item ;
if(table.indexOf("TEST_") != -1 && table.indexOf("202012") != -1){
print(table);
}
});
## 索引大表扫描
var tableNames = db.getCollectionNames();
tableNames.forEach(function(item){
var table = item ;
if(table.indexOf("TEST_") != -1 && table.indexOf("202012") != -1){
var indexNames = db[table].getIndexes();
var count = db[table].count();
if(indexNames.length==1){
var str = table + " No index , count : " + count;
print(str);
}
}
});
慢查询kill
db.currentOp({op: "query",secs_running:{$gt: 8},ns:/TEST_XX_2020_9/}).inprog.forEach(function(item) {
var lock_info = it;
print("kill", item.opid);
db.killOp(item.opid)
})
## 大表扫描
var tableNames = db.getCollectionNames();
tableNames.forEach(function(item){
var table = item ;
if(table.indexOf("TEST_") != -1 && table.indexOf("2020_9") != -1){
var count = db[table].count();
if(count > 1000000){
var str = table + " count : " + count;
print(str);
}
}
}
);
## 数据大小统计 GB
var tableNames = db.getCollectionNames();
var totalStorageSize = 0;
tableNames.forEach(function(item){
var table = item ;
if(table.indexOf("TEST_") != -1 && table.indexOf("202012") != -1){
var storageSize = db[table].stats(1024);
var str = table + " size KB: " + storageSize.storageSize;
totalStorageSize += storageSize.storageSize;
print(str);
}
});
print("totalSize GB : " + totalStorageSize/1024/1024);