Mongodb Mongo DB收集协议

Mongodb Mongo DB收集协议,mongodb,compact-database,Mongodb,Compact Database,我一直在寻找一种方法来减少一组不断增长的mongo数据库的大小。我是mongodb的新手。我研究了各种方法,并认为以下代码可能是实现这一点的最简单方法,而无需为特定数据库编写代码: db = db.getSiblingDB("admin"); dbs = db.runCommand({ "listDatabases": 1 }).databases; // Iterate through each database and get its collections. dbs.forEach

我一直在寻找一种方法来减少一组不断增长的mongo数据库的大小。我是mongodb的新手。我研究了各种方法,并认为以下代码可能是实现这一点的最简单方法,而无需为特定数据库编写代码:

db = db.getSiblingDB("admin"); 
dbs = db.runCommand({ "listDatabases": 1 }).databases; 

// Iterate through each database and get its collections. 
dbs.forEach(function(database) { 
    db = db.getSiblingDB(database.name); 
    db.getCollectionNames().forEach(function (collectionName) { 
        print('Compacting: ' + collectionName); 
        db.runCommand({ compact: collectionName }); 
        db.runCommand({ repairDatabase: 1 } ); 
    }); 
}); 
但是,这会在所有数据库上运行,因此我不确定这是否会对运行造成潜在危险?

提到在运行compact时进行备份可能是个好主意,但除此之外,他们没有具体列出原因

它还说,它将在命令运行时阻止数据库的操作,因此在计划的维护时间之外这样做可能不是一个好主意