2011-07-12 193 views
3

我正在使用數據庫MongoDB,由於資源消耗高(使用幾乎100GB的數據集),我需要縮小文檔的字段名稱(如「ALTER TABLE」 )。MongoDB - 更改文檔結構

有沒有一個容易/自動做到這一點?

回答

4

雖然您可以使用您的首選語言編寫腳本來完成此操作,但沒有內置的方法來執行此操作。另一種方法是更新您的應用程序代碼以重寫文檔,以便在訪問文檔時使用較短的字段名稱,這具有不需要停機或協調腳本和應用程序代碼的優勢。

請注意,即使縮小字段名稱,數據集的大小也會保持不變 - MongoDB將更新文檔,留下可用空間以「圍繞」文檔,因此您可能看不到縮小工作集大小。如果你期望你的文檔增長,這可能是有利的,因爲如果有足夠的可用空間來適應新文檔,MongoDB將在文檔增長時就地更新。

或者,您可以使用repairDatabase命令,這會收縮您的數據集。 repairDatabase可能會很慢,並且需要相當多的可用磁盤空間(它必須完整複製整個數據庫)。 repairDatabase也會鎖定整個數據庫,因此您應該在計劃的維護時段內運行此操作。

最後,如果您使用的是版本1.9或更高版本,則可以使用compact命令。 compactrepairDatabase需要更少的可用空間(它需要大約2GB的磁盤空間),並且一次只能在一個集合上運行。 compact以與repairDatabase相同的方式鎖定數據庫,並且在維護窗口期間應用與調度壓縮相同的警告。

+2

您可以在不停機的情況下執行此操作。 –

+0

謝謝,很好添加。 – dcrosta

+0

非常感謝。我還沒有聽說過精簡版,也會試試它:-) –