mongorestore

在本页面

macOS Sierra and Go 1.6 Incompatibility

在 macOS Sierra 上运行的用户需要 3.2.10 或更高版本的 mongorestore。

Synopsis

mongorestore程序将从mongodump创建的二进制数据库转储或标准 Importing(从版本 3.0.0 开始)中的数据加载到mongodmongos实例中。

有关mongorestore使用的概述,请参见使用 MongoDB 工具备份和还原

Syntax

从系统命令行运行mongorestore,而不是mongo shell。

mongorestore [options] [<directory>/<BSON file>]

例如,要从dump目录还原到在端口27017上运行的本地mongod实例,请执行以下操作:

mongorestore  dump/

mongorestoredump/目录还原时,它会根据需要创建数据库和集合并记录其进度:

2019-07-13T10:05:40.353-0400   preparing collections to restore from
2019-07-13T10:05:40.386-0400   reading metadata for test.bakesales from dump/test/bakesales.metadata.json
2019-07-13T10:05:40.403-0400   reading metadata for test.salaries from dump/test/salaries.metadata.json
2019-07-13T10:05:40.434-0400   restoring test.bakesales from dump/test/bakesales.bson
2019-07-13T10:05:40.464-0400   restoring test.salaries from dump/test/salaries.bson
2019-07-13T10:05:40.473-0400   no indexes to restore
2019-07-13T10:05:40.473-0400   finished restoring test.bakesales (21 documents)
2019-07-13T10:05:40.490-0400   no indexes to restore
2019-07-13T10:05:40.491-0400   finished restoring test.salaries (10 documents)
2019-07-13T10:05:40.491-0400   restoring users from dump/admin/system.users.bson
2019-07-13T10:05:40.559-0400   restoring roles from dump/admin/system.roles.bson
2019-07-13T10:05:40.711-0400   done

您还可以从dump/目录还原一个或多个特定集合。例如,以下操作从dump/目录中的相应数据文件恢复单个集合:

mongorestore --nsInclude test.purchaseorders dump/

如果dump/目录不包含指定名称空间的相应数据文件,则不会还原任何数据。例如,以下内容指定了dump/目录中没有对应数据的集合名称空间:

mongorestore --nsInclude foo.bar dump/

mongorestore输出以下消息:

2019-07-13T10:06:36.095-0400   preparing collections to restore from
2019-07-13T10:06:36.095-0400   done

有关更多示例,请参见Examples

有关选项和参数的更多信息,请参见Options

Behavior

Insert Only

mongorestore可以创建新数据库或将数据添加到现有数据库。但是,mongorestore仅执行插入操作,不执行更新。也就是说,如果将文档还原到现有数据库,并且 collection 和现有文档具有与要还原的文档相同的值_id字段,则mongorestore不会覆盖这些文档。

Rebuild Indexes

mongorestore重新创建mongodump记录的索引。

Note

从 MongoDB 2.6 开始,创建索引将为如果现有文档中的索引键超出限制,将发生错误。有关更多信息和解决方案,请参见强制执行索引密钥长度限制

如果您已有一个违反此限制的数据集,但要在还原数据后解决索引问题,则可以通过将 mongod 实例的failIndexKeyTooLong参数设置为 false 来禁用目标数据库上的默认索引键长度验证。

Version Compatibility

mongodump从 2.2 或更高版本开始使用的数据格式与mongod的早期版本“不兼容”。不要使用mongodump的最新版本来备份较旧的数据存储。

排除 system.profile 集合

mongorestore无法还原system.profile收集数据。

Required Access

要将数据还原到已启用access control的 MongoDB 部署中,restore角色提供了从备份还原数据的必要特权如果数据不包含system.profile集合数据,并且您在不使用--oplogReplay选项的情况下运行mongorestore

如果备份数据包含system.profile收集数据,或者您使用--oplogReplay运行,则需要其他特权:

system.profile如果备份数据包含system.profile集合数据,并且目标数据库不包含system.profile集合,则mongorestore会尝试创建该集合,即使该程序实际上并未还原system.profile文档。因此,用户需要其他特权才能对数据库的system.profile集合执行createCollectionconvertToCapped操作。


内置角色dbAdmindbAdminAnyDatabase均提供其他特权。
| --oplogReplay |要与--oplogReplay一起运行,请创建在anyResource上具有anyActionuser-defined role
仅向必须使用--oplogReplay运行mongorestore的用户授予权限。

Options

在 3.0.0 版中进行了更改:mongorestore删除了--filter--dbpath--noobjcheck选项。

  • mongorestore

  • --help ``

    • 返回有关 mongorestore 的选项和使用的信息。
  • --verbose `,` `-v`

    • 增加在标准输出或日志文件中返回的内部报告的数量。通过多次包含该选项(例如-vvvvv)来提高-v形式的详细程度。
  • --quiet ``

    • 在安静模式下运行 mongorestore ,以尝试限制输出量。

此选项禁止显示:

  • database commands的输出

  • replication activity

  • 连接接受的事件

  • 连接关闭事件

  • --version ``

    • 返回 mongorestore 版本号。
  • --uri <connectionString>

    • 3.4.6 版中的新功能。

指定可解析的URI 连接字符串以连接到 MongoDB 部署。

--uri "mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]"

有关连接字符串的组成部分的更多信息,请参见连接字符串 URI 格式文档。

Important

以下命令行选项不能与--uri选项一起使用:

而是将这些选项指定为--uri连接字符串的一部分。

  • --host <hostname><:port> , -h <hostname><:port>
    • 默认:localhost:27017

指定要连接的mongod的可解析主机名。默认情况下, mongorestore 尝试连接到端口27017上在 localhost 上运行的 MongoDB 实例。

要连接到副本集,请指定replSetName以及集合成员的种子列表,如下所示:

--host <replSetName>/<hostname1><:port>,<hostname2><:port>,<...>

指定副本集列表格式时, mongorestore 始终连接到primary

您还可以通过指定仅该成员的主机和端口来连接到副本集的任何单个成员:

--host <hostname1><:port>

在 3.0.0 版中进行了更改:如果您使用 IPv6 并使用<address>:<port>格式,则必须将地址和端口组合的一部分括在方括号(例如[<address>])中。

Note

您不能同时指定--host--uri

  • --port <port>
    • 默认:27017

指定 MongoDB 实例在其上侦听 Client 端连接的 TCP 端口。

Note

您不能同时指定--port--uri

  • --ssl ``
    • 2.6 版的新功能。

启用与启用了 TLS/SSL 支持的mongodmongos的连接。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslCAFile <filename>
    • 2.6 版的新功能。

指定包含来自证书颁发机构的根证书链的.pem文件。使用相对或绝对路径指定.pem文件的文件名。

从 3.4 版开始,如果未指定--sslCAFilessl.CAFile并且未使用 x.509 身份验证,则在连接到启用了 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储。

如果使用 x.509 身份验证,则必须指定--sslCAFilessl.CAFile

Warning

版本 3.2 和更早版本: 对于到mongodmongos的 TLS/SSL 连接(--ssl),如果 mongorestore 在没有--sslCAFile的情况下运行,则 mongorestore 将不会尝试验证服务器证书。这会导致已过期的mongodmongos证书以及冒充有效mongodmongos实例的外部进程的漏洞。确保始终指定 CA 文件以在可能进行入侵的情况下验证服务器证书。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslPEMKeyFile <filename>
    • 2.6 版的新功能。

指定同时包含 TLS/SSL 证书和密钥的.pem文件。使用相对或绝对路径指定.pem文件的文件名。

使用--ssl选项连接到已启用CAFile且未启用allowConnectionsWithoutCertificatesmongodmongos时,此选项是必需的。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslPEMKeyPassword <value>
    • 2.6 版的新功能。

指定用于解密证书密钥文件的密码(即--sslPEMKeyFile)。仅当证书密钥文件已加密时,才使用--sslPEMKeyPassword选项。在所有情况下, mongorestore 都会从所有日志记录和报告输出中删除密码。

如果 PEM 文件中的私钥已加密并且您未指定--sslPEMKeyPassword选项,则 mongorestore 将提示您 Importing 密码。参见TLS/SSL 证书密码短语

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslCRLFile <filename>
    • 2.6 版的新功能。

指定包含证书吊销列表的.pem文件。使用相对或绝对路径指定.pem文件的文件名。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslAllowInvalidCertificates ``
    • 2.6 版的新功能。

绕过服务器证书的验证检查,并允许使用无效的证书。使用allowInvalidCertificates设置时,MongoDB 将使用无效证书记录为警告。

从 MongoDB 3.6.6 开始,如果在使用 x.509 身份验证时指定--sslAllowInvalidCertificatesssl.allowInvalidCertificates: true,则无效的证书仅足以构建 TLS/SSL 连接,而对于身份验证则“不足”。

Warning

对于与mongodmongos的 TLS/SSL 连接,请尽可能避免使用--sslAllowInvalidCertificates,并且仅在不可能进行入侵的系统上使用--sslAllowInvalidCertificates

如果mongo shell(和其他MongoDB Tools)与--sslAllowInvalidCertificates选项一起运行,则mongo shell(和其他MongoDB Tools)将不会尝试验证服务器证书。这对过期的mongodmongos证书以及冒充有效的mongodmongos实例的外部进程造成了漏洞。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslAllowInvalidHostnames ``
    • 3.0 版中的新功能。

禁用 TLS/SSL 证书中的主机名验证。允许 mongorestore 连接到 MongoDB 实例,即使其证书中的主机名与指定的主机名不匹配也是如此。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslFIPSMode ``
    • 2.6 版的新功能。

指示 mongorestore 使用已安装的 OpenSSL 库的 FIPS 模式。您的系统必须具有符合 FIPS 的 OpenSSL 库,才能使用--sslFIPSMode选项。

Note

兼容 FIPS 的 TLS/SSL 仅在MongoDB Enterprise中可用。有关更多信息,请参见为 FIPS 配置 MongoDB

  • --username <username> , -u <username>

Note

您不能同时指定--username--uri

  • --password <password> , -p <password>

在版本 3.0.2 中进行了更改:要提示用户 Importing 密码,请传递不带--password--username选项,或者像--password ""一样将空字符串指定为--password值。

Note

您不能同时指定--password--uri

Note

您不能同时指定--authenticationDatabase--uri

  • --authenticationMechanism <name>
    • 默认:SCRAM-SHA-1

在 2.6 版中进行了更改:添加了对PLAINMONGODB-X509身份验证机制的支持。

在版本 3.0 中进行了更改:添加了对SCRAM-SHA-1身份验证机制的支持。将默认机制更改为SCRAM-SHA-1

指定 mongorestore 实例用于对mongodmongos进行身份验证的身份验证机制。

ValueDescription
SCRAM-SHA-1RFC 5802使用 SHA1 哈希函数的标准咸化挑战响应身份验证机制。
MONGODB-CRMongoDB 质询/响应身份验证。 (* MongoDB 3.6 中已弃用*)
MONGODB-X509MongoDB TLS/SSL 证书认证。
GSSAPI (Kerberos)使用 Kerberos 的外部身份验证。此机制仅在MongoDB Enterprise中可用。
PLAIN(LDAP SASL)使用 LDAP 的外部身份验证。您也可以使用PLAIN对数据库中的用户进行身份验证。 PLAIN以纯文本形式传输密码。此机制仅在MongoDB Enterprise中可用。

Note

您不能同时指定--authenticationMechanism--uri

  • --gssapiServiceName ``
    • 2.6 版的新功能。

使用GSSAPI/Kerberos指定服务的名称。仅当服务未使用默认名称mongodb时才需要。

此选项仅在 MongoDB Enterprise 中可用。

  • --gssapiHostName ``
    • 2.6 版的新功能。

使用GSSAPI/Kerberos指定服务的主机名。 如果计算机的主机名与 DNS 解析的主机名不匹配。

此选项仅在 MongoDB Enterprise 中可用。

  • --db <database> , -d <database>
    • 从 BSON 文件还原时,指定 mongorestore 的目标数据库以将数据还原到*。如果数据库不存在,则 mongorestore 创建数据库。例如,以下内容将salaries集合还原到reporting数据库中。
mongorestore --db reporting dump/test/salaries.bson

如果您未指定--db,则 mongorestore 将从数据文件中获取数据库名称。

从目录或存档文件还原时,不建议使用--db--collection选项。相反,要从存档或目录还原,请参见--nsInclude

Note

您不能同时指定--db--uri

  • --collection <collection> , -c <collection>
    • 指定目标集合的名称,以便 mongorestore 从 BSON 文件还原时将数据还原到*。如果您未指定--collection,则 mongorestore 将从 Importing 文件名中获取集合名称。如果 Importing 文件具有 extensions,则 MongoDB 从集合名称中忽略该文件的 extensions。
mongorestore --db reporting --collection employeesalaries dump/test/salaries.bson

从目录或存档文件还原时,不建议使用--db--collection选项。相反,要从存档或目录还原,请参见--nsInclude

  • --nsExclude <namespace pattern>
    • 3.4 版的新功能。

指定namespace模式(例如"test.myCollection""reporting.*""dept*.bar")以从还原中“排除”匹配的名称空间。在模式中,您可以将星号*用作通配符。有关通配符模式的示例,请参见使用通配符还原集合

您可以多次指定--nsExclude以排除多个名称空间模式。

  • --nsInclude <namespace pattern>
    • 3.4 版的新功能。

指定namespace模式(例如"test.myCollection""reporting.*""dept*.bar")以仅还原与该模式匹配的名称空间。在模式中,您可以将星号*用作通配符。有关通配符模式的示例,请参见使用通配符还原集合

您可以多次指定--nsInclude来包含多个名称空间模式。

如果源目录或文件(即要从中还原数据的目录/文件)不包含与名称空间模式匹配的数据文件,则不会还原任何数据。

  • --nsFrom <namespace pattern>
    • 3.4 版的新功能。

在还原操作期间,与--nsTo一起使用可重命名namespace--nsFrom指定转储文件中的集合,而--nsTo指定在还原的数据库中应使用的名称。

--nsFrom接受命名空间模式作为其参数。命名空间模式允许--nsFrom引用与指定模式匹配的任何命名空间。 mongorestore匹配名称空间模式的最小有效出现次数。

对于简单替换,请使用星号(*)作为通配符。用反斜杠转义所有 Literals 星号和反斜杠。替换项与匹配项线性对应:--nsFrom中的每个星号必须与--nsTo中的一个星号相对应,--nsFrom中的第一个星号与nsTo中的第一个星号匹配。

对于更复杂的替换,请使用美元符号来界定要在替换中使用的“通配符”变量。 在还原期间更改集合的命名空间提供了用美元符号分隔的通配符进行复杂替换的示例。

与用星号替代,与用美元符号分隔的通配符替代不需要**是线性的。

  • --nsTo <namespace pattern>
    • 3.4 版的新功能。

在还原操作期间,与--nsFrom一起使用可重命名namespace--nsTo指定要在还原的数据库中使用的新集合名称,而--nsFrom指定在转储文件中的名称。

--nsTo接受命名空间模式作为其参数。命名空间模式允许--nsTo引用与指定模式匹配的任何命名空间。 mongorestore匹配名称空间模式的最小有效出现次数。

对于简单替换,请使用星号(*)作为通配符。用反斜杠转义所有 Literals 星号和反斜杠。替换项与匹配项线性对应:--nsFrom中的每个星号必须与--nsTo中的一个星号相对应,--nsFrom中的第一个星号与nsTo中的第一个星号匹配。

对于更复杂的替换,请使用美元符号来界定要在替换中使用的“通配符”变量。 在还原期间更改集合的命名空间提供了用美元符号分隔的通配符进行复杂替换的示例。

与用星号替代,与用美元符号分隔的通配符替代不需要**是线性的。

  • --objcheck ``

    • 强制 mongorestore 收到后验证来自 Client 端的所有请求,以确保 Client 端永远不会将无效文档插入数据库。对于高度嵌套子文档的对象,--objcheck对性能的影响很小。
  • --drop ``

    • 从转储的备份还原集合之前,请从目标数据库中删除集合。 --drop不会删除不在备份中的集合。

当还原包含admin数据库时,带有--dropmongorestore 会删除所有用户凭据,并将其替换为转储文件中定义的用户。因此,在启用authorization的系统中, mongorestore 必须能够向现有用户向转储文件中定义的用户进行身份验证。如果 mongorestore 无法对转储文件中定义的用户进行身份验证,则还原过程将失败,并留下一个空数据库。

  • --dryRun ``
    • 3.4 版的新功能。

运行 mongorestore 而不实际导入任何数据,返回 mongorestore 摘要信息。与--verbose一起使用可产生更详细的摘要信息。

  • --oplogReplay ``
    • 恢复数据库转储后,从 bson 文件重播oplog个条目。与mongodump --oplog结合使用时,~bin.mongorestore --oplogReplay将数据库还原到使用mongodump --oplog命令捕获的时间点备份。

mongorestore 在以下位置搜索 bson 文件的任何有效源:

  • 转储目录的顶级,例如使用mongodump --oplog创建的转储。

  • --oplogFile指定的路径。

  • <dump-directory>/local/oplog.rs.bson,就像在作为副本集成员的mongod上将local数据库中的oplog.rs集合转储时一样。

  • <dump-directory>/local/oplog.$main.bson,就像在使用主从复制的mongodlocal数据库中的oplog.rs集合转储的情况下一样。

如果转储目录的顶层有一个oplog.bson文件,并且 --oplogFile指定的路径,则 mongorestore 将返回错误。

如果转储目录的顶层有一个oplog.bson文件,则 mongorestore 将该文件恢复为操作日志。如果dump/local目录中也有 bson 文件,则 mongorestore 会将它们还原为普通集合。

如果您使用--oplogFile指定操作日志文件,则 mongorestore 将该文件恢复为操作日志。如果dump/local目录中也有 bson 文件,则 mongorestore 会将它们还原为普通集合。

如果dump/local目录 中都同时有oplog.rs.bsonoplog.$main.bson文件,则在转储目录或用--oplogFile指定的文件的顶层没有oplog.bson文件, mongorestore 会返回错误。

有关--oplogReplay的示例,请参见恢复时间点 Oplog 备份

Note

当使用mongorestore--oplogReplay还原副本集时,必须还原使用~bin.mongodump --oplog创建的replica set成员的完整转储。如果使用以下任何选项来限制要还原的数据,则mongorestore--oplogReplay失败:

  • --oplogLimit <timestamp>
    • 防止 mongorestore 应用时间戳小于或等于<timestamp>oplog个条目。以<time_t>:<ordinal>的形式指定<timestamp>值,其中<time_t>是距 UNIX 纪元以来的秒数,而<ordinal>表示操作日志中在指定秒内发生的操作计数器。

您必须结合使用--oplogLimit--oplogReplay选项。

  • --oplogFile <path>
    • 3.4 版的新功能。

指定包含还原操作日志数据的操作日志文件的路径。与--oplogReplay一起使用。

如果您指定--oplogFile并且转储目录的顶层有oplog.bson文件,则 mongorestore 将返回错误。

  • --keepIndexVersion ``

    • 防止 mongorestore 在还原过程中将索引升级到最新版本。
  • --noIndexRestore ``

    • 防止 mongorestore 恢复和构建相应的mongodump输出中指定的索引。
  • --noOptionsRestore ``

    • 防止 mongorestore 在已恢复的集合上设置集合选项,例如collMod database command指定的选项。
  • --restoreDbUsersAndRoles ``

  • --writeConcern <document>

    • 默认:多数

mongorestore 执行的每个写操作指定write concern

使用w options将写关注点指定为文档。例如:

--writeConcern "{w:'majority'}"
  • --maintainInsertionOrder ``
    • 默认:false

如果指定, mongorestore 会按照它们在 Importing 源中出现的 Sequences 插入文档,否则 mongorestore 可能会以任意 Sequences 执行插入。

  • --numParallelCollections int , -j int
    • 默认:4

集合数 mongorestore 应该并行恢复。

如果在还原**集合时指定-j,则-jMap 到--numInsertionWorkersPerCollection选项而不是--numParallelCollections

  • --numInsertionWorkersPerCollection int
    • 默认:1

3.0.0 版中的新功能。

指定每个集合要同时运行的插入工作程序的数量。

对于大型 import,增加插入 Worker 的数量可能会提高 import 速度。

  • --stopOnError ``
    • 3.0 版中的新功能。

当遇到错误时,强制 mongorestore 停止还原。

  • --bypassDocumentValidation ``
    • 使 mongorestore 在操作过程中绕过document validation。这使您可以插入不符合验证要求的文档。

版本 3.2.1 中的新功能。

  • --gzip ``
    • 3.2 版中的新功能。

~bin.mongodump --gzip创建的 zipfile 或数据流中还原

要从包含 zipfile 的转储目录中还原,请使用--gzip选项运行mongorestore

要从压缩的存档文件还原,请同时使用--gzip和–archive 选项运行mongorestore

  • --archive <=file|null>
    • 3.2 版中的新功能。

从存档文件或标准 Importing(stdin)恢复。

要从存档文件还原,请使用--archive选项和存档文件名运行 mongorestore

要从标准 Importing 恢复,请使用--archive选项运行 mongorestore ,但省略文件名。

Note

  • 您不能将--archive选项与--dir选项一起使用。

  • 如果您将--archive选项与<path>参数一起使用,则 mongorestore 将忽略<path>参数。

  • mongorestore 仍支持位置-参数,以从标准 Importing 中还原单个集合。

  • <path> ``
    • 从中还原数据的目录路径或 BSON 文件名。

您不能同时将<path>参数和--dir选项(也指定转储目录)指定为 mongorestore

  • --dir string

    • 指定转储目录。
  • 您不能同时将--dir选项和<path>参数(也指定转储目录)指定为 mongorestore

  • 您不能将--archive选项与--dir选项一起使用。

Examples

使用访问控制还原

在以下示例中,mongorestore/opt/backup/mongodump-2011-10-24还原到在主机mongodb1.example.net的端口27017上运行的mongod实例。 --uri字符串省略了用户密码,以mongorestore提示 Importing 密码。

mongorestore --uri "mongodb://[email protected]:27017/?authSource=admin" /opt/backup/mongodump-2011-10-24

或者,您可以使用--host--port--username--authenticationDatabase来指定主机,端口,用户名和身份验证数据库。省略--password提示 Importingmongorestore密码:

mongorestore --host mongodb1.example.net --port 27017 --username user --authenticationDatabase=admin /opt/backup/mongodump-2011-10-24

恢复收藏集

3.4 版的新功能。

要恢复特定的集合,请使用--nsInclude,传入集合的完整名称空间(<database>.<collection>)。

例如,以下内容从dump/目录中的相应文件中恢复数据库test中名为purchaseorders的集合。

mongorestore --nsInclude test.purchaseorders dump/

mongorestore输出结果,包括恢复的文档数:

2019-07-13T10:09:17.942-0400   preparing collections to restore from
2019-07-13T10:09:17.957-0400   reading metadata for test.purchaseorders from dump/test/purchaseorders.metadata.json
2019-07-13T10:09:18.010-0400   restoring test.purchaseorders from dump/test/purchaseorders.bson
2019-07-13T10:09:18.033-0400   no indexes to restore
2019-07-13T10:09:18.033-0400   finished restoring test.purchaseorders (6 documents)
2019-07-13T10:09:18.033-0400   done

如果dump/目录不包含指定名称空间的相应数据文件,则不会还原任何数据:

2019-07-13T10:10:05.779-0400   preparing collections to restore from
2019-07-13T10:10:05.779-0400   done

或者,您可以使用--db--collection.bson文件还原特定的集合:

mongorestore --db test --collection purchaseorders dump/test/purchaseorders.bson
2019-07-13T10:11:00.093-0400   checking for collection data in dump/test/purchaseorders.bson
2019-07-13T10:11:00.110-0400   reading metadata for test.purchaseorders from dump/test/purchaseorders.metadata.json
2019-07-13T10:11:00.158-0400   restoring test.purchaseorders from dump/test/purchaseorders.bson
2019-07-13T10:11:00.223-0400   no indexes to restore
2019-07-13T10:11:00.223-0400   finished restoring test.purchaseorders (6 documents)
2019-07-13T10:11:00.223-0400   done

使用通配符还原集合

3.4 版的新功能。

--nsInclude--nsExclude支持指定您希望使用星号作为通配符的还原操作包括或排除的namespaces

以下示例在当前目录的dump/子目录中还原与指定的名称空间模式匹配的文档。 --nsInclude语句指定仅还原transactions数据库中的文档,而--nsExclude指示mongorestore排除名称以_dev结尾的集合。 mongorestore将数据恢复到在端口27017上的 localhost 接口上运行的mongod实例。

mongorestore --nsInclude 'transactions.*' --nsExclude 'transactions.*_dev' dump/

还原期间更改集合的命名空间

3.4 版的新功能。

MongoDB 3.4 添加了--nsFrom--nsTo选项,使您能够更改要还原的集合的名称空间。 --nsFrom--nsTo支持使用星号作为通配符*,并且*支持使用美元符号来界定要在替换中使用的“通配符”变量。

考虑一个已使用mongodump导出到dump/目录的数据库datadata数据库包含以下集合:

  • sales_customer1

  • sales_customer2

  • sales_customer3

  • users_customer1

  • users_customer2

  • users_customer3

使用--nsFrom--nsTo,可以将数据还原到不同的名称空间中。以下操作

  • data数据库中的sales_<customerName>集合还原到<customerName>数据库中的sales集合,并且

  • <customerName>数据库中的users_<customerName>集合还原到users集合。

mongorestore --nsInclude 'data.*' --nsFrom 'data.$prefix$_$customer$' --nsTo '$customer$.$prefix$'

从存档文件还原

要从存档文件还原,请使用新的--archive选项和存档文件名运行restore

mongorestore --archive=test.20150715.archive

从存档文件还原数据库

3.2 版中的新功能。

要从存档文件还原,请使用新的--archive选项和存档文件名运行restore。例如,以下操作从文件test.20150715.archive恢复test数据库。

mongorestore --archive=test.20150715.archive  --nsInclude "test.*"

从压缩数据还原

版本 3.2 中的新功能:使用--gzip选项,mongorestore可以从mongodump创建的 zipfile 或数据流中恢复。

要从包含 zipfile 的转储目录中还原,请使用--gzip运行mongorestore。例如,以下操作从默认dump目录中的 zipfile 中恢复test数据库:

mongorestore --gzip  --nsInclude "test.*" dump/

要从压缩的存档文件还原,请使用--gzip选项和--archive选项运行mongorestore。例如,以下操作从 Files 文件test.20150715.gz恢复test数据库。

mongorestore --gzip --archive=test.20150715.gz --nsInclude "test.*"

从标准 Importing 还原数据库

3.2 版中的新功能。

要从标准 Importing 恢复,请使用--archive选项运行mongorestore,但“忽略”文件名。例如:

mongodump --archive --db test --port 27017 | mongorestore --archive --port 27018