renameCollection
在本页面
Definition
renameCollection
- 更改现有集合的名称。以完整的namespace(
<database>.<collection>
)的形式将集合名称指定为renameCollection。
- 更改现有集合的名称。以完整的namespace(
对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将在重命名集合之前删除renameCollection的target 。默认值为false 。 |
writeConcern |
document | 可选的。表示该操作的write concern的文档。省略使用默认的写关注。 |
Behavior
Sharded Collections
现有目标集合
如果target
是现有集合的名称,并且您未指定dropTarget: true
,则renameCollection失败。
Performance
在版本 3.6 中更改。
renameCollection对性能的影响取决于目标namespace。
如果目标数据库与源数据库相同,则renameCollection只需更改名称空间。这是一个快速的操作。
如果目标数据库与源数据库不同,则renameCollection将所有文档从源集合复制到目标集合。根据集合的大小,这可能需要更长的时间才能完成。其他需要独占访问受影响数据库的操作将被阻止,直到重命名完成。有关需要对所有数据库进行独占访问的操作,请参见一些常见的 Client 端操作会采取什么锁?。
local Database
-
您不能将集合从已复制的数据库重命名为未复制的
local
数据库。 -
您不能将未复制的
local
数据库中的集合重命名为复制的数据库。
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 名称空间存在并且dropTarget 是false 或未指定,则引发。 |
|
exception 15967: | |
如果target 名称空间是无效的集合名称,则引发。 |