无法将数据库从一个 mongodb 帐户复制到另一个帐户

Unable to copy a database from one mongodb account to another

我通常像这样在同一个帐户的同一个集群中创建一个数据库的副本:

  1. 转储原始数据库

mongodump --uri 'mongodb+srv://ACC_USER_NAME:ACC_USER_PASSWORD@cluster0.fklgt.mongodb.net/ORIGINAL_DATABASE_NAME' --archive="DUMP_FILE_NAME" --forceTableScan

  1. 从转储文件恢复数据库

mongorestore --uri 'mongodb+srv://ACC_USER_NAME:ACC_USER_PASSWORD@cluster0.fklgt.mongodb.net/ORIGINAL_DATABASE_NAME' --archive="DUMP_FILE_NAME" --nsFrom='ORIGINAL_DATABASE_NAME.' --nsTo='NEW_DATABASE_NAME.'

而且效果很好。

现在,我创建了一个新的 MongoDB atlas 帐户,我正在尝试将原始数据库复制到新帐户中。

所以第一步类似:

  1. 转储原始数据库

mongodump --uri 'mongodb+srv://ORIGINAL_ACC_USER_NAME:ORIGINAL_ACC_USER_PASSWORD@cluster0.fklgt.mongodb.net/ORIGINAL_DATABASE_NAME' --archive="DUMP_FILE_NAME" --forceTableScan

  1. 从转储文件恢复数据库

在这里我找不到要使用的参数。
第一个例子,第二步,URI是这样的:

mongodb+srv://ACC_USER_NAME:ACC_USER_PASSWORD@cluster0.fklgt.mongodb.net/ORIGINAL_DATABASE_NAME

所以我显然应该更换

ACC_USER_NAME:ACC_USER_PASSWORD

NEW_ACC_USER_NAME:NEW_ACC_USER_PASSWORD

但是,ORIGINAL_DATABASE_NAME 呢,我找不到可以放在那里的等效项。 其余参数:

--archive="DUMP_FILE_NAME" --nsFrom='ORIGINAL_DATABASE_NAME.' --nsTo='NEW_DATABASE_NAME.'

应该保持不变。

第 1 步

首先,你应该mongodump。你已经做对了。

mongodump --uri mongodb+srv://<USER>:<PASSWORD>@cluster.xxx.mongodb.net/<DATABASE>

此命令将创建一个 BSON 文件,我们将在下一步中使用它来恢复数据库。

第 2 步

现在,您可以将 mongorestore 与新的集群连接字符串一起使用,并与上一步中的 BSON 文件一起使用。

mongorestore --uri mongodb+srv://<USER>:<PASSWORD>@new_cluster.xxx.mongodb.net <BSON_FILE_PATH>

注意:您不需要使用 mongorestore 指定 ORIGINAL_DATABASE_NAME。您应该只指定新集群的基本连接字符串。 BSON 文件包含恢复数据库所需的所有数据。因此,数据库将在新集群中创建,并且与旧集群中的名称相同。