在删除数据之前,数据库占用25.5G空间,有413562171个文档。
然后我执行以下操作:
db.collectionName.remove({xxx:" xxx"})
此操作删除165540416个文档,数据库需要25.8G。
我很困惑为什么在删除这么多数据后需要更多空间。
答案 0 :(得分:3)
删除文档时,MongoDB不会自动释放空间(假设此空间可以重新用于新文档)
您可以使用repairDatabase
命令释放空间:来自mongo shell的db.repairDatabase()
;或者mongod --repair
(使用这种方式时mongod不应该已经运行)
https://docs.mongodb.com/v3.2/reference/command/repairDatabase/
请注意,repairDatabase需要的可用磁盘空间等于当前数据集的大小加2千兆字节,并获得全局写锁定,将阻止其他操作直到完成
少添加:
如果您使用WiredTiger存储引擎,您也可以使用compact
命令代替repairDatabase
https://docs.mongodb.com/manual/reference/command/compact/
WiredTiger存储引擎是从MongoDB 3.2开始的默认存储引擎