2012-06-13 350 views
5

首先請注意,這個問題是來自以下兩個MongoDB:如何將兩個集合/數據庫合併爲一個?

MongoDB: Combine data from multiple collections into one..how?

Merging two collections in MongoDB

MongoDB and "joins"

我將解釋如下不同:

我有兩個數據庫命名爲:DB_ADB_B在我的MongoDB中。

每個數據庫都有一個同名的集合store

兩個集合有很多很多的文檔中有完全相同的結構{關鍵:「KEY1」,值:「值1」}等

其實,我本來只能創建DB_A和插入所有文檔到DB_A。但後來當我進行第二輪插入時,我輸入了錯誤的名稱作爲數據庫名稱,從而導致了一個錯誤。

所以現在每個數據庫的大小都是32GB,我想合併兩個數據庫。

一個問題/限制是現在可用的空閒空間只有15GB,所以我不能只從copy所有的東西從DB_BDB_A

我在想我是否可以做move?或者最簡單/最好/最簡單的方法來合併兩個簡單的數據庫?我更喜歡最有效的方式,因爲只需將32GB重新插入DB_A將需要相當長的時間。

+2

從DB_B獲取第一個文檔。將它插入到DB_A中(如果尚未存在)。從DB_B中刪除它。重複,直到完成。 –

+0

@SergioTulentsev如果我只是刪除DB_B並重新插入(DB_B的)所有東西到DB_A使用我的代碼,這種方式會比你建議的更慢嗎? – Jack

+0

如果您的所有數據都在DB_B中,那麼您可以刪除DB_A並重命名DB_B。 –

回答

4

我認爲最簡單的(也許是唯一的)方法是編寫一個腳本,在文檔之後合併兩個數據庫文檔。

  1. 從DB_B獲取第一個文檔。
  2. 如果需要,將其插入到DB_A中。
  3. 從DB_B中刪除它。
  4. 重複,直到完成。

而不是從源數據庫(DB_B)中刪除文檔,您可能只想批量讀取文檔。這應該是更高性能,但更難編碼(特別是如果你從來沒有做過這樣的事情)。

+0

如何在不同的數據庫db_a和db_b之間切換?我正在嘗試在python中編寫腳本。需要一些指導。 – rkatkam

+1

@rkatkam:只需創建兩個單獨的連接。 –

+0

好的。還有一個qtn,如果我有兩個名稱相同的獨立數據庫,該怎麼辦?我應該如何繼續?目前我正在不同的機器上使用它們。我想合併它們。任何想法? – rkatkam