Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

renameCollection

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 命令字段
  • 行为
  • 例子
renameCollection

更改现有集合的名称。以完整命名空间( <database>.<collection> ) 的形式为renameCollection指定集合名称。

提示

mongosh 中,还可以通过 renameCollection() 辅助方法运行此命令。

辅助方法对 mongosh 用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。

管理员数据库发出renameCollection命令。

此命令可用于以下环境中托管的部署:

  • MongoDB Atlas :用于在云中部署 MongoDB 的完全托管服务

注意

所有 MongoDB Atlas 集群都支持此命令。有关所有命令的信息,请参阅不支持的命令

该命令具有以下语法:

db.runCommand(
{
renameCollection: "<source_namespace>",
to: "<target_namespace>",
dropTarget: <true|false>,
writeConcern: <document>,
comment: <any>
}
)

该命令包含以下字段:

字段
类型
说明
renameCollection
字符串
要重命名的集合的命名空间。命名空间是数据库名称和集合名称的组合。
to
字符串
集合的新命名空间。如果新命名空间指定了不同的数据库,则renameCollection命令会将集合复制到新数据库并删除源集合。请参阅命名限制。
dropTarget
布尔
可选。如果truemongod将在重命名集合之前删除renameCollectiontarget 。默认值为false
writeConcern
文档

可选。表达该操作的写关注的文档。省略以使用默认的写关注。

在分片集群上发出时,mongosrenameCollection 命令及其辅助程序 db.collection.renameCollection()写关注转换为 "majority"

comment
any

可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:

注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。

从MongoDB 5.0开始,您可以使用renameCollection命令更改分分片的集合的名称。目标数据库必须与源数据库相同。

只要源数据库和目标数据库具有相同的主分片分片,就可以使用renameCollection重命名分片分片集群中的未分片集合。

不能使用renameCollection重命名时间序列集合。有关详细信息,请参阅时间序列集合限制。

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

renameCollection 具有不同的性能影响,具体取决于目标命名空间。

如果目标数据库与源数据库相同, renameCollection只需更改命名空间即可。这是一项快速操作。

如果目标数据库与源数据库不同, renameCollection会将所有文档从源集合复制到目标集合。根据集合的大小,这可能需要更长的时间才能完成。

5.0 版本中的更改

重命名分片集群中的分片集合或非分片集合时,源集合和目标集合都以独占方式锁定在每个分片上。对源集合和目标集合的后续操作必须等待重命名操作完成。

有关 MongoDB 中锁定的更多信息,请参阅常见问题解答:并发。

如果重命名同一数据库中的集合, renameCollection会在操作期间获得源集合和目标集合的独占锁。对集合的所有后续操作都必须等到renameCollection完成。

如果在不同数据库之间重命名集合, renameCollection将获得目标数据库上的独占 (W)锁、源数据库上的意向共享 (R)锁以及源集合上的共享 (S)锁。对目标数据库的后续操作必须等到renameCollection释放独占数据库锁。

有关 MongoDB 中锁定的更多信息,请参阅常见问题解答:并发。

  • 您无法将已复制数据库中的集合重命名为未复制的 local 数据库中的集合名称。

  • 您无法将未复制的 local 数据库中的集合重命名为已复制数据库中的集合名称。

警告

db.collection.renameCollection()方法和renameCollection 命令会使打开的游标失效。这会为源集合或目标集合上打开的任何现有 变更流 创建 无效事件 ,并中断当前从重命名的集合中返回数据的查询。

mongodump--oplog如果客户端在转储进程发出renameCollection 命令,则使用 将失败。有关更多信息,请参阅mongodump.--oplog

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

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

mongosh 为命令提供了 db.collection.renameCollection() 辅助方法,可对同一数据库中的集合进行重命名。以下内容与之前的示例等效:

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

后退

removeQuerySettings