On this page
mongorestore
在本页面
macOS Sierra and Go 1.6 Incompatibility
在 macOS Sierra 上运行的用户需要 3.2.10 或更高版本的 mongorestore。
Synopsis
mongorestore程序将从mongodump创建的二进制数据库转储或标准 Importing(从版本 3.0.0 开始)中的数据加载到mongod或mongos实例中。
有关mongorestore使用的概述,请参见使用 MongoDB 工具备份和还原。
Syntax
从系统命令行运行mongorestore,而不是mongo shell。
mongorestore [options] [<directory>/<BSON file>]
例如,要从dump
目录还原到在端口27017
上运行的本地mongod实例,请执行以下操作:
mongorestore dump/
mongorestore从dump/
目录还原时,它会根据需要创建数据库和集合并记录其进度:
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集合执行createCollection和convertToCapped操作。 |
内置角色dbAdmin和dbAdminAnyDatabase均提供其他特权。
| --oplogReplay
|要与--oplogReplay一起运行,请创建在anyResource上具有anyAction的user-defined role。
仅向必须使用--oplogReplay运行mongorestore的用户授予权限。
Options
在 3.0.0 版中进行了更改:mongorestore删除了--filter
,--dbpath
和--noobjcheck
选项。
mongorestore
--help
``- 返回有关 mongorestore 的选项和使用的信息。
--verbose
`,` `-v`
- 增加在标准输出或日志文件中返回的内部报告的数量。通过多次包含该选项(例如
-vvvvv
)来提高-v
形式的详细程度。
- 增加在标准输出或日志文件中返回的内部报告的数量。通过多次包含该选项(例如
--quiet
``- 在安静模式下运行 mongorestore ,以尝试限制输出量。
此选项禁止显示:
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
--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>]
)中。
--port
<port>
- 默认:27017
指定 MongoDB 实例在其上侦听 Client 端连接的 TCP 端口。
--ssl
``- 2.6 版的新功能。
启用与启用了 TLS/SSL 支持的mongod或mongos的连接。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslCAFile
<filename>
- 2.6 版的新功能。
指定包含来自证书颁发机构的根证书链的.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
从 3.4 版开始,如果未指定--sslCAFile
或ssl.CAFile
并且未使用 x.509 身份验证,则在连接到启用了 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储。
如果使用 x.509 身份验证,则必须指定--sslCAFile
或ssl.CAFile
。
Warning
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslPEMKeyFile
<filename>
- 2.6 版的新功能。
指定同时包含 TLS/SSL 证书和密钥的.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
使用--ssl选项连接到已启用CAFile且未启用allowConnectionsWithoutCertificates的mongod或mongos时,此选项是必需的。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslPEMKeyPassword
<value>
- 2.6 版的新功能。
指定用于解密证书密钥文件的密码(即--sslPEMKeyFile)。仅当证书密钥文件已加密时,才使用--sslPEMKeyPassword选项。在所有情况下, mongorestore 都会从所有日志记录和报告输出中删除密码。
如果 PEM 文件中的私钥已加密并且您未指定--sslPEMKeyPassword选项,则 mongorestore 将提示您 Importing 密码。参见TLS/SSL 证书密码短语。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslCRLFile
<filename>
- 2.6 版的新功能。
指定包含证书吊销列表的.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslAllowInvalidCertificates
``- 2.6 版的新功能。
绕过服务器证书的验证检查,并允许使用无效的证书。使用allowInvalidCertificates设置时,MongoDB 将使用无效证书记录为警告。
从 MongoDB 3.6.6 开始,如果在使用 x.509 身份验证时指定--sslAllowInvalidCertificates
或ssl.allowInvalidCertificates: true
,则无效的证书仅足以构建 TLS/SSL 连接,而对于身份验证则“不足”。
Warning
对于与mongod和mongos的 TLS/SSL 连接,请尽可能避免使用--sslAllowInvalidCertificates
,并且仅在不可能进行入侵的系统上使用--sslAllowInvalidCertificates
。
如果mongo shell(和其他MongoDB Tools)与--sslAllowInvalidCertificates
选项一起运行,则mongo shell(和其他MongoDB Tools)将不会尝试验证服务器证书。这对过期的mongod和mongos证书以及冒充有效的mongod或mongos实例的外部进程造成了漏洞。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslAllowInvalidHostnames
``- 3.0 版中的新功能。
禁用 TLS/SSL 证书中的主机名验证。允许 mongorestore 连接到 MongoDB 实例,即使其证书中的主机名与指定的主机名不匹配也是如此。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslFIPSMode
``- 2.6 版的新功能。
指示 mongorestore 使用已安装的 OpenSSL 库的 FIPS 模式。您的系统必须具有符合 FIPS 的 OpenSSL 库,才能使用--sslFIPSMode选项。
Note
兼容 FIPS 的 TLS/SSL 仅在MongoDB Enterprise中可用。有关更多信息,请参见为 FIPS 配置 MongoDB。
--username
<username>
,
-u
<username>
- 指定用于对使用身份验证的 MongoDB 数据库进行身份验证的用户名。与--password和--authenticationDatabase选项结合使用。
Note
您不能同时指定--username和--uri。
--password
<password>
,
-p
<password>
- 指定用于对使用身份验证的 MongoDB 数据库进行身份验证的密码。与--username和--authenticationDatabase选项结合使用。
在版本 3.0.2 中进行了更改:要提示用户 Importing 密码,请传递不带--password的--username选项,或者像--password ""
一样将空字符串指定为--password值。
Note
您不能同时指定--password和--uri。
--authenticationDatabase
<dbname>
- 指定已在其中创建指定的--username的身份验证数据库。参见Authentication Database。
Note
您不能同时指定--authenticationDatabase和--uri。
--authenticationMechanism
<name>
- 默认:SCRAM-SHA-1
在 2.6 版中进行了更改:添加了对PLAIN
和MONGODB-X509
身份验证机制的支持。
在版本 3.0 中进行了更改:添加了对SCRAM-SHA-1
身份验证机制的支持。将默认机制更改为SCRAM-SHA-1
。
指定 mongorestore 实例用于对mongod或mongos进行身份验证的身份验证机制。
Value | Description |
---|---|
SCRAM-SHA-1 | RFC 5802使用 SHA1 哈希函数的标准咸化挑战响应身份验证机制。 |
MONGODB-CR | MongoDB 质询/响应身份验证。 (* MongoDB 3.6 中已弃用*) |
MONGODB-X509 | MongoDB 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
数据库中。
- 从 BSON 文件还原时,指定 mongorestore 的目标数据库以将数据还原到*。如果数据库不存在,则 mongorestore 创建数据库。例如,以下内容将
mongorestore --db reporting dump/test/salaries.bson
如果您未指定--db,则 mongorestore 将从数据文件中获取数据库名称。
从目录或存档文件还原时,不建议使用--db和--collection选项。相反,要从存档或目录还原,请参见--nsInclude。
--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
数据库时,带有--drop的 mongorestore 会删除所有用户凭据,并将其替换为转储文件中定义的用户。因此,在启用authorization的系统中, mongorestore 必须能够向现有用户和向转储文件中定义的用户进行身份验证。如果 mongorestore 无法对转储文件中定义的用户进行身份验证,则还原过程将失败,并留下一个空数据库。
--dryRun
``- 3.4 版的新功能。
运行 mongorestore 而不实际导入任何数据,返回 mongorestore 摘要信息。与--verbose
一起使用可产生更详细的摘要信息。
--oplogReplay
``- 恢复数据库转储后,从 bson 文件重播oplog个条目。与mongodump --oplog结合使用时,
~bin.mongorestore --oplogReplay
将数据库还原到使用mongodump --oplog
命令捕获的时间点备份。
- 恢复数据库转储后,从 bson 文件重播oplog个条目。与mongodump --oplog结合使用时,
mongorestore 在以下位置搜索 bson 文件的任何有效源:
转储目录的顶级,例如使用mongodump --oplog创建的转储。
--oplogFile指定的路径。
<dump-directory>/local/oplog.rs.bson
,就像在作为副本集成员的mongod上将local
数据库中的oplog.rs
集合转储时一样。<dump-directory>/local/oplog.$main.bson
,就像在使用主从复制的mongod上local
数据库中的oplog.rs
集合转储的情况下一样。
如果转储目录的顶层有一个oplog.bson
文件,并且 由--oplogFile指定的路径,则 mongorestore 将返回错误。
如果转储目录的顶层有一个oplog.bson
文件,则 mongorestore 将该文件恢复为操作日志。如果dump/local
目录中也有 bson 文件,则 mongorestore 会将它们还原为普通集合。
如果您使用--oplogFile指定操作日志文件,则 mongorestore 将该文件恢复为操作日志。如果dump/local
目录中也有 bson 文件,则 mongorestore 会将它们还原为普通集合。
如果dump/local
目录 和 中都同时有oplog.rs.bson
和oplog.$main.bson
文件,则在转储目录或用--oplogFile指定的文件的顶层没有oplog.bson
文件, mongorestore 会返回错误。
有关--oplogReplay的示例,请参见恢复时间点 Oplog 备份。
Note
当使用mongorestore和--oplogReplay还原副本集时,必须还原使用~bin.mongodump --oplog
创建的replica set成员的完整转储。如果使用以下任何选项来限制要还原的数据,则mongorestore和--oplogReplay失败:
See also
See also
--oplogLimit
<timestamp>
- 防止 mongorestore 应用时间戳小于或等于
<timestamp>
的oplog个条目。以<time_t>:<ordinal>
的形式指定<timestamp>
值,其中<time_t>
是距 UNIX 纪元以来的秒数,而<ordinal>
表示操作日志中在指定秒内发生的操作计数器。
- 防止 mongorestore 应用时间戳小于或等于
您必须结合使用--oplogLimit和--oplogReplay选项。
--oplogFile
<path>
- 3.4 版的新功能。
指定包含还原操作日志数据的操作日志文件的路径。与--oplogReplay一起使用。
如果您指定--oplogFile并且转储目录的顶层有oplog.bson
文件,则 mongorestore 将返回错误。
--keepIndexVersion
``- 防止 mongorestore 在还原过程中将索引升级到最新版本。
--noIndexRestore
``- 防止 mongorestore 恢复和构建相应的mongodump输出中指定的索引。
--noOptionsRestore
``- 防止 mongorestore 在已恢复的集合上设置集合选项,例如collMod database command指定的选项。
--restoreDbUsersAndRoles
``- 恢复给定数据库的用户和角色定义。有关更多信息,请参见system.roles Collection和system.users Collection。
--writeConcern
<document>
- 默认:多数
为 mongorestore 执行的每个写操作指定write concern。
使用w options将写关注点指定为文档。例如:
--writeConcern "{w:'majority'}"
--maintainInsertionOrder
``- 默认:false
如果指定, mongorestore 会按照它们在 Importing 源中出现的 Sequences 插入文档,否则 mongorestore 可能会以任意 Sequences 执行插入。
--numParallelCollections
int
,
-j
int
- 默认:4
集合数 mongorestore 应该并行恢复。
如果在还原**集合时指定-j
,则-j
Map 到--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
<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://user@mongodb1.example.net: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/
目录的数据库data
。 data
数据库包含以下集合:
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