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 в них конкретно не указана причина.
В нем также говорится, что он будет блокировать операции для базы данных во время выполнения команды, поэтому, вероятно, не стоит делать это вне запланированных часов обслуживания.