On this page
cloneCollection
在本页面
Definition
cloneCollection
- 将集合从远程mongod实例复制到当前mongod实例。 cloneCollection在数据库中创建一个与远程集合的数据库同名的集合。 cloneCollection采用以下形式:
{ cloneCollection: "<namespace>",
from: "<hostname>",
query: { <query> },
writeConcern: { <write concern> },
bypassDocumentValidation: <boolean>
}
cloneCollection具有以下字段:
Field | Type | Description |
---|---|---|
cloneCollection |
string | 要复制的收藏集的namespace。名称空间是数据库名称和集合名称的组合。 |
from |
string | 要克隆的服务器的地址。 |
query |
document | 可选的。一个查询,用于过滤源集合中cloneCollection将复制到当前数据库的文档。 |
writeConcern |
document | 可选的。表示该操作的write concern的文档。省略使用默认的写关注。 |
bypassDocumentValidation |
boolean | 可选的。使cloneCollection在操作过程中绕过文档验证。这使您可以插入不符合验证要求的文档。 |
版本 3.2 中的新功能。
mongo Shell 提供方法db.cloneCollection()作为cloneCollection命令的包装器。
Behavior
mongos
Authorization
Namespace
在版本 3.0 中更改。
如果给定的namespace在目标mongod实例中已经存在,则cloneCollection将返回错误。
FeatureCompatibilityVersion
您无法在具有featureCompatibilityVersion (FCV) 3.6 的mongod实例与 MongoDB 版本 3.4 和更早的mongod实例之间复制数据。
For example:
Instance 1 | Instance 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 |
可以复制数据。 |
复制数据的操作包括:
Example
db.getSiblingDB("users").runCommand( { cloneCollection: "users.profiles",
from: "mongodb.example.net:27017",
query: { 'active' : true }
} )
此操作将profiles
集合从mongodb.example.net
的服务器上users
数据库复制到本地服务器的users
数据库中。该操作仅复制满足查询{ 'active' : true }
的文档。