renameCollection

在本页面

Definition

admin database发出renameCollection命令。

该命令采用以下形式:

{ renameCollection: "<source_namespace>", to: "<target_namespace>", dropTarget: <true|false>  writeConcern: <document> }

该命令包含以下字段:

Field Type Description
renameCollection string 要重命名的集合的namespace。名称空间是数据库名称和集合名称的组合。
to string 集合的新名称空间。如果新名称空间指定了其他数据库,则renameCollection命令将集合复制到新数据库并删除源集合。参见Naming Restrictions
dropTarget boolean 可选的。如果为true,则mongod将在重命名集合之前删除renameCollectiontarget。默认值为false
writeConcern document 可选的。表示该操作的write concern的文档。省略使用默认的写关注。

Behavior

Sharded Collections

renameCollection与分片集合不兼容。

现有目标集合

如果target是现有集合的名称,并且您未指定dropTarget: true,则renameCollection失败。

Performance

在版本 3.6 中更改。

renameCollection对性能的影响取决于目标namespace

如果目标数据库与源数据库相同,则renameCollection只需更改名称空间。这是一个快速的操作。

如果目标数据库与源数据库不同,则renameCollection将所有文档从源集合复制到目标集合。根据集合的大小,这可能需要更长的时间才能完成。其他需要独占访问受影响数据库的操作将被阻止,直到重命名完成。有关需要对所有数据库进行独占访问的操作,请参见一些常见的 Client 端操作会采取什么锁?

local Database

Example

下面的示例将test数据库中名为orders的集合重命名为test数据库中的orders2014

db.adminCommand( { renameCollection: "test.orders", to: "test.orders2014" } )

mongo shell 为命令提供了db.collection.renameCollection()帮助器,以重命名* same *数据库中的集合。以下等效于先前的示例:

use test
db.orders.renameCollection( "orders2014" )

Exceptions

exception 10026:
如果source名称空间不存在,则引发。
exception 10027:
如果target名称空间存在并且dropTargetfalse或未指定,则引发。
exception 15967:
如果target名称空间是无效的集合名称,则引发。
首页