clone

在本页面

该命令采用以下形式:

{ clone: <copyfromhost:port>, writeConcern: <document>, bypassDocumentValidation: <boolean> }

cloneCollection具有以下字段:

FieldTypeDescription
hostnamestring要复制的数据库的主机名。
writeConcerndocument可选的。表示该操作的write concern的文档。省略使用默认的写关注。
bypassDocumentValidationboolean可选的。使clone在操作过程中绕过文档验证。这使您可以插入不符合验证要求的文档。


版本 3.2 中的新功能。

要使用clone命令,请在 目标服务器 上运行该命令,并指定要复制的源。运行命令的数据库确定要从源复制哪个数据库。

mongoShell 提供方法db.cloneDatabase()作为clone命令的包装器。

Behavior

Data

clone命令不会快照数据库。如果在克隆操作期间的任何时候有任何 Client 端更新您要复制的数据库,则结果数据库可能会不一致。

Locks

clone操作期间,目标数据库将定期锁定。换句话说,clone偶尔会屈服以允许完成数据库上的其他操作。

FeatureCompatibilityVersion

您无法在具有featureCompatibilityVersion (FCV) 3.6 的mongod实例与 MongoDB 版本 3.4 和更早的mongod实例之间复制数据。

For example:

Instance 1Instance 2
具有 FCV 3.6 的 3.6 版mongod具有 FCV 3.6 的 3.6 版mongod可以复制数据。
具有 FCV 3.6 的 3.6 版mongod具有 FCV 3.4 的 3.6 版mongod可以复制数据。
具有 FCV 3.6 的 3.6 版mongod具有 FCV 3.4 的 3.4 版mongod无法复制数据。实例 2 必须是 MongoDB 3.6 版
具有 FCV 3.4 的 3.6 版mongod具有 FCV 3.4 的 3.4 版mongod可以复制数据。
具有 FCV 3.4 的 3.6 版mongod版本 3.2 mongod可以复制数据。

复制数据的操作包括:

Replica Sets

clone命令可以从replica set的辅助成员进行复制。

Example

以下操作将marketing数据库从"db1.example.net:27017"复制到您发出db.runCommand()mongod 实例。

use marketing
db.runCommand( { clone: "db1.example.net:27017" })