mongodb 不会释放已经占用的硬盘空间,除非drop整个库,有以下两个方法可以释放磁盘空间。
方法一:
在mongodb的shell中进入相应库中执行db.repairDatabase()
或db.runCommand({ repairDatabase: 1 })
缺点是花费的时间并不短,要保证剩余一定量磁盘空间,而且当repair database的时候处于锁表状态,既不能读也不能写
方法二:
导入导出
mongodump --port 27017 -u root -p mypassword --authenticationDatabase admin -d test -o /backup
在mongodb的shell中进入相应库中执行db.dropDatabase()
mongorestore --port 27017 -u root -p Manager --authenticationDatabase admin -d test /backup/test
缺点是当库很大时花费的时间也会相当长
以上两种方法其实都不建议在生产环境做,都会影响正常业务,测试环境可以尝试,生产环境磁盘空间不够还是建议增加磁盘。