db.collection.renameCollection()
带驱动程序的 MongoDB
本页面提供 mongosh
方法的相关信息。要查看 MongoDB 驱动程序中的等效方法,请参阅编程语言的相应页面:
定义
db.collection.renameCollection(target, dropTarget)
重命名集合。为
renameCollection
数据库命令提供包装器。Parameter类型说明target
字符串
集合的新名称。将字符串括在引号中。请参阅命名限制。
dropTarget
布尔
可选。如果
true
,mongod
在重命名集合之前删除renameCollection
中的target
。默认值为false
。
兼容性
此方法可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
行为
db.collection.renameCollection()
方法通过更改与给定集合相关的元数据,在集合内进行操作。
有关其他警告和消息,请参阅文档 renameCollection
。
警告
db.collection.renameCollection()
方法和renameCollection
命令会使打开的游标失效。这会为源集合或目标集合上打开的任何现有变更流创建一个无效事件 ,并中断当前从重命名集合返回数据的查询。
该方法具有以下限制:
db.collection.renameCollection()
无法在各数据库之间移动数据集。将renameCollection
用于此类重命名操作。您无法重命名视图。
db.collection.renameCollection()
在时间序列集合中不支持。您无法将集合重命名为其自身。如果您尝试将集合重命名为其自身,则会引发
IllegalOperation
错误。
分片集群中的资源锁定
5.0 版本中的更改。
重命名分片集群中的分片集合或非分片集合时,源集合和目标集合都以独占方式锁定在每个分片上。对源集合和目标集合的后续操作必须等待重命名操作完成。
有关 MongoDB 中锁定的更多信息,请参阅常见问题解答:并发。
副本集中的资源锁定
renameCollection()
在操作期间获得对源集合和目标集合的独占锁。对集合的所有后续操作都必须一直等到 renameCollection()
完成。
互动 mongodump
如果客户端在转储过程中发出 db.collection.renameCollection()
,则以 --oplog
启动的 mongodump
会失败。有关更多信息,请参阅 mongodump.--oplog
。
例子
在集合对象上调用 db.collection.renameCollection()
方法。例如:
db.rrecord.renameCollection("record")
该操作会将 rrecord
集合重命名为 record
。如果目标名称(即 record
)是现有集合的名称,则该操作会失败。