为什么删除文档后mongodb数据库占用更多空间

为什么删除文档后mongodb数据库占用更多空间,mongodb,Mongodb,在我删除数据之前,数据库占用25.5G空间,有413562171个文档 然后,我执行以下操作: db.collectionName.remove({xxx:xxx}) 此操作删除165540416个文档,数据库占用25.8G 我不明白为什么删除这么多数据后会占用更多空间。当您删除文档时,MongoDB不会自动释放空间(它假设此空间可以重新用于新文档) 您可以使用repairDatabase命令从mongo shell释放空间:asdb.repairDatabase();或者作为mongod--r

在我删除数据之前,数据库占用25.5G空间,有413562171个文档

然后,我执行以下操作:

db.collectionName.remove({xxx:xxx})

此操作删除165540416个文档,数据库占用25.8G


我不明白为什么删除这么多数据后会占用更多空间。

当您删除文档时,MongoDB不会自动释放空间(它假设此空间可以重新用于新文档)

您可以使用
repairDatabase
命令从mongo shell释放空间:as
db.repairDatabase()
;或者作为
mongod--repair
(以这种方式使用时,mongod不应该已经运行)

请考虑到repairDatabase需要的可用磁盘空间等于当前数据集的大小加上2 GB,并获得全局写锁,将阻止其他操作,直到完成

少量添加:

如果使用WiredTiger存储引擎,也可以使用
compact
命令代替
repairDatabase

WiredTiger存储引擎是MongoDB 3.2中启动的默认存储引擎