使用 --nsFrom 和 --nsTo 从未知数据库名称恢复到不同的数据库

Restoring from unknown database name to different database using --nsFrom and --nsTo

自从 --db 弃用后,我一直无法将数据库名称未知的存档恢复到名称已知的现有数据库中。

到目前为止,这是我的尝试,但没有成功,因为我需要知道源数据库名称: mongorestore --archive=/path/to/my.archive --nsFrom '[UNKNOWN DATABASE NAME].*' --nsTo '[KNOWN DATABASE NAME].*' --drop

如果我使用 --nsFrom '*.*' --nsTo '[KNOWN DATABASE NAME].*',我会收到一条错误消息,指出通配符的数量必须匹配。

编辑:下面的原始答案 "works" 但将恢复以原始未知数据库名称为前缀的集合。

如果要恢复的集合不带数据库名称前缀,请使用 $ 方法。

mongorestore --archive=/path/to/my.archive --nsFrom '$prefix$.$suffix$' --nsTo '[KNOWN DATABASE NAME].$suffix$' --drop

原回答:

--nsFrom 和--nsTo 参数中的星号数量必须匹配。如果您不知道用于创建存档的命名空间的名称,只需使用 '*' 即可映射到所有命名空间,例如:

mongorestore --archive=/path/to/my.archive --nsFrom '*' --nsTo '[KNOWN DATABASE NAME].*' --drop