В случае удаления большого фрагмента данных из коллекции, и коллекция никогда не использует удаленное пространство для новых документов, это пространство должно быть возвращено в операционную систему, чтобы оно могло использоваться другими базами данных или коллекциями.
Поведение процесса уплотнения зависит от механизма MongoDB следующим образом
db.runCommand({compact: collection-name })
MMAPv1
Операции дефрагментации операций уплотнения данных и amp; индексов. Однако он не освобождает место для операционной системы. Операция по-прежнему полезна для дефрагментации и создания более непрерывного пространства для повторного использования MongoDB. Тем не менее, это бесполезно, когда свободное место на диске очень мало.
Во время операции уплотнения требуется дополнительное пространство на диске до 2 ГБ.
Блокировка уровня базы данных
WiredTiger
Механизм WiredTiger обеспечивает сжатие по умолчанию, которое потребляет меньше места на диске, чем MMAPv1.
Компактный процесс освобождает свободное пространство к операционной системе. Для выполнения компактной операции требуется минимальное дисковое пространство. WiredTiger также блокирует все операции с базой данных, так как он нуждается в блокировке уровня базы данных.
Для механизма MMAPv1 компактность не возвращает пространство в операционную систему. Для освобождения неиспользуемого пространства вам потребуется выполнить операцию восстановления.
db.runCommand({repairDatabase: 1})
Здесь вы можете найти подробную информацию о компактной работе здесь
Короткий, рабочий ответ и для Windows и для *отклоняет:
#define __FILENAME__ std::max<const char*>(__FILE__,\
std::max(strrchr(__FILE__, '\\')+1, strrchr(__FILE__, '/')+1))