2012-07-27 94 views
1

我爲Mongo數據庫使用C#驅動程序,並且想要實現對加蓋集合的大小調整。我遵循這個answer的建議,建議使用臨時名稱創建一個新集合,從舊集合中複製文檔,刪除舊集合並重命名新集合。但我怎樣纔能有效地做到這一點?當前集合的大小是700Mb,複製所有數據需要花費相當多的時間。 我很可能會在運行服務器的機器上運行此代碼如何將大量文檔從一個集合有效地複製到另一個集合

回答

1

調整封頂集合大小的最有效方法仍然是創建一個新文檔,將文檔複製過來,然後重命名舊集合和如引用的answer中所述重新命名新的。

注意:只要確保在切換時沒有人插入/更新舊集合。如果您在db.eval(「....」)中運行該代碼,它將在運行時鎖定服務器。

1

但我怎麼能有效地做到這一點?

你真的不能。以前的答案來自Scott Hernandez,他是10gen的支持工程師(,該公司背後是MongoDB)。他知道MongoDB以及這個星球上的任何人,所以如果他的答案不起作用,你需要拿出完全不同的

完全不同的東西...

嘗試通過代碼的解決方案。

創建一個新的封頂集合並修改您的代碼以寫入新集合,但要從新舊集合中讀取。它會稍微慢一點(你必須在寫之前檢查兩個集合)。但是最終你的所有數據都將在新的集合中,並且你可以停止從舊集合中讀取數據。

相關問題