我正在使用数据库MongoDB,并且由于资源消耗大(使用几乎100GB的数据集),我需要缩小文档的字段名称(类似“ALTER TABLE”)。
这样做是否容易/自动?
答案 0 :(得分:6)
我想是的!查看$rename
:http://www.mongodb.org/display/DOCS/Updating#Updating-%24rename
使用带有大量update()
的查询在您的数据集上运行$rename
,我认为这样可以获得您想要的效果。
答案 1 :(得分:4)
没有内置的方法可以执行此操作,但您可以使用首选语言编写脚本来执行此操作。另一种方法是更新应用程序代码以重写文档,以便在访问文档时使用较短的字段名称,这样做的好处是不需要停机或协调脚本和应用程序代码。
请注意,即使缩小字段名称,您的数据集仍将保持相同的大小 - MongoDB将更新文档,在文档周围留下可用空间,因此您可能看不到工作量减少设定尺寸。如果您希望文档增长,这可能是有利的,因为如果有足够的可用空间来容纳新文档,则当文档增长时,MongoDB将就地更新。
或者,您可以使用repairDatabase
命令,这将缩小您的数据集。 repairDatabase
可能非常慢,并且需要相当多的可用磁盘空间(它必须制作整个数据库的完整副本)。 repairDatabase
也会锁定整个数据库,因此您应该在计划的维护时段内运行它。
最后,如果您使用的是1.9或更高版本,则可以使用compact
命令。 compact
所需的可用空间少于repairDatabase
(它需要大约2千兆字节的磁盘空间),并且一次只能在一个集合上运行。 compact
以与repairDatabase
相同的方式锁定数据库,并且在维护窗口期间应用有关调度压缩的相同警告。