Pages Menu
Twitter
Categories Menu

Posted by on Dec 28, 2014 in MongoDB | 0 comments

Cleanup Big mongodb Collection

Recently i  have come across one small problem that i needed to fix. I had many records in a DB that i do not needed. I could not delete the entire collection, as i needed some of the records to be left alone. I have come up with this script, which allows me to delete records as I need.

query = {created_at: {"$gte": new ISODate("2012-11-01T00:00:00Z"), "$lt":  new ISODate("2012-12-01T00:00:00Z")}}

items = db.<COLLECTION>.find(query).count();
count = 0;
batches =  parseInt(items / 1000);

for (var i = 0; i < batches; i++) {
  print("Remaining: "+ parseInt(batches-i));
  db.<COLLECTION>.find(query).skip(count).limit(1000).forEach(function(p) { 
    if (p.has_transaction && p.has_transaction == 1) { 
      count++;
    } else {
      db.<MY BACKUP COLLECTION>.insert(p); 
      db.<COLLECTION>.remove(p,1); 
    }
  });
}
print(db.<COLLECTION>.find(query).count());

Post a Reply

Your email address will not be published. Required fields are marked *


*