Skip to content

Instantly share code, notes, and snippets.

@marcoberri
Created September 9, 2015 08:29
Show Gist options
  • Save marcoberri/b7f8b45ad4c3548b9153 to your computer and use it in GitHub Desktop.
Save marcoberri/b7f8b45ad4c3548b9153 to your computer and use it in GitHub Desktop.
MongoDB script to Compact all collection for all DB in server
//V 0.1
// Marco Berri
//marcoberri@gmail.com http://tecnicume.blogspot.com
function compactCollections(dbName){
var dbToCompact = db.getSisterDB(dbName);
dbToCompact.getCollectionNames().forEach(function(cName) {
if( cName.indexOf("system") != -1)
return;
coll = dbToCompact[cName];
print("--------------------")
print("collections:" + cName);
print("count: " + coll.count());
var storage = coll.stats().storageSize;
var size = coll.stats().size;
print(" storage: " + storage);
print(" size: " + size);
dbToCompact.runCommand ( { compact: cName } );
var storagepost = coll.stats().storageSize;
var sizepost = coll.stats().size;
print(" storagepost: " + storagepost);
print(" sizepost: " + sizepost);
});
};
listDatabases = db.adminCommand('listDatabases')
print("Tot dbs:" + listDatabases.databases.length);
for(var i=0; i<listDatabases.databases.length;i++){
print("******************************");
print("Start Compact db:" + listDatabases.databases[i].name);
compactCollections(listDatabases.databases[i].name);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment