2012-06-13 299 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