2016-02-03 23 views
0

我有幾個盒子運行他們自己的mongo實例,到目前爲止,我每個人都有大約2個演出數據。我有一個箱子,現在我開始將所有數據發送到,但我必須「合併」並將這些箱子中的數據彙總回這個整合的箱子。是否有可能將多個mongodb合併到一個盒子中

我在做什麼每個箱子是我跑

mongodump mydb restorepath 

,然後轉化中的BSON輸出運行後在我的大箱子一個mongorestore。有沒有另一種方法來做到這一點?我擔心這樣做可能會遇到問題,比如id碰撞,以及你有什麼問題。

+0

那些較小的機器運行相同數據庫的不同副本?或不同的數據庫? –

+0

@SergioTulentsev他們運行相同的集合和相同的數據庫,但不同的「數據」,文檔是不同的。 –

+0

如果您使用Mongo的標準_id生成器,那麼即使它們是兩個單獨的數據庫,您也不應該看到任何衝突,因爲它們是UUID – Martin

回答

0

當從多臺機器導入文檔時發生Id衝突的可能性非常小,因爲ObjectId的3個字節表示生成該id的系統的機器標識符。兩個具有相同ObjectId的系統的機會是1600萬。即使你在同一臺機器上運行兩個MongoDB實例(你不會這樣做,除非你想試驗分片和複製),你不會碰到衝突,因爲進程ID也是ObjectId的一部分。

所有這些當然只適用於讓MongoDB自動生成ObjectId的情況。您的應用程序也可以將_id字段設置爲自己的值。這個值甚至不需要是ObjectId。它實際上可以是MongoDB支持的任何值。

相關問題