紧凑的命令不会释放MongoDB 2.0中的空间

Ale*_*lex 5 mongodb

我刚刚安装了MongoDB 2.0并尝试在早期版本中运行compact命令而不是repair命令.我的数据库目前是空的,这意味着只有一个集合有0个条目和两个系统集合(索引,用户).目前,db在硬盘上占用大约4 GB的空间.db用作临时队列,所有项目在处理后都将被删除.

我试图在mongo shell中运行以下命令.

use mydb
db.theOnlyCollection.runCommand("compact")
Run Code Online (Sandbox Code Playgroud)

它返回

ok: 1
Run Code Online (Sandbox Code Playgroud)

但是仍然在硬盘上占用相同的空间.我也尝试压缩系统集合,但这不起作用.

当我运行正常的修复命令

db.repairDatabase()
Run Code Online (Sandbox Code Playgroud)

数据库是压缩的,只需要400 MB.

任何人都知道为什么compact命令不起作用?

非常感谢你的帮助.

最好

亚历克斯

pin*_*33n 5

集合压缩不应减少数据文件的大小。要点是对集合和索引数据进行碎片整理 - 将未使用的空间间隙合并到连续空间中,以便将新数据存储在那里。此外,它实际上可能会增加数据文件的大小:

压缩可能会使数据文件的总大小最多增加 2GB。即使在这种情况下,总的集合存储空间也会减少。

http://www.mongodb.org/display/DOCS/compact+Command#compactCommand-Effectsofacompaction