如何合并存储在两台不同计算机上的mongoDB数据库?

7

我正在使用MongoDB来存储一个特定网站的数据。由于有两个人在工作,我们各自使用自己的电脑进行工作。两台计算机都有一个名为 website_data 的数据库以及该数据库中的一个集合 webpages。现在,为了进行一些分析和绘制图表,我需要将所有数据合并到一台计算机上。如何将这两个数据库合并?我考虑写一个脚本,但我不知道如何连接到另一台计算机的数据库。是否有某个数据库文件可以直接复制到我的计算机上?

1个回答

20
您可以使用命令行工具 mongodumpmongorestore 来完成此操作。

在源计算机上使用命令 mongodump --db [dbname] 导出数据库的所有集合,并将它们存储到目录 dump/[collection].bson 中。将文件复制到目标计算机,然后使用 mongorestore --db [dbname] [collection].bson 将生成的文件导入到已合并的数据库中。内容将被附加到现有集合中,就像使用 insert 命令一样。

当您想要像高级系统管理员那样操作时:这两个命令行工具都有命令行选项,可以在远程系统上执行所述操作,并且您可以将mongodump的输出直接传输到mongorestore中,因此如果您想要展示,您可以从远程系统中使用一个控制台命令来完成此操作。但是,如果这只是一次性的事情,而命令行技巧不是您的爱好,请坚持使用文件。


5
如果两个文档具有相同的 _id,会发生错误、被视为相同的文档并因此被忽略、合并或其他情况,想知道这是否正常。 - Augie Gardner
@Augie Gardner:我也有同样的问题,但似乎mongodump会丢弃所有索引。在https://docs.mongodb.com/v4.2/reference/program/mongodump/上的文档中说: “mongodump输出仅捕获数据库中的文档,不包括索引数据。” - rikisa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接