How to reclaiming deleted space without `db.repairDatabase()`?

mongodb

Solution

Update: With WiredTiger, `compact` does free space.

The original answer to this question is here: Reducing MongoDB database file size

There really is nothing outside of `repair` that will reclaim space. The `compact` should allow you to go much longer on the existing space. Otherwise, you will have to migrate to a bigger drive.

One way to do this is to use an off-line secondary from your Replica Set. This should give you a whole maintenance window to migrate, repair, move back and bring back up.

If you are not running a Replica Set, it's time to look at doing just that.

Problem

I want to shrink data files size by reclaiming deleted space, but I can't run `db.repairDatabase()`, because free disk space is not enough.

Original source

Related problems