Mongo DB Collection Compact

Я искал способ уменьшить размер набора баз данных Монго, которые продолжают расти в размерах. Я новичок в 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 } ); 
    }); 
}); 

Тем не менее, это работает на всех базах данных, и поэтому я не был уверен, что это может быть потенциально опасно для запуска?

1 ответ

В документации упоминается, что, вероятно, хорошей идеей является создание резервной копии при работе с compact, однако за пределами Operation Termination в них конкретно не указана причина.

В нем также говорится, что он будет блокировать операции для базы данных во время выполнения команды, поэтому, вероятно, не стоит делать это вне запланированных часов обслуживания.

Другие вопросы по тегам