文档菜单
文档首页
/
MongoDB 手册
/ / /

moveCollection

在本页

  • 定义
  • 兼容性
  • 限制
  • 语法
  • 命令字段
  • 注意事项
  • 要求
  • 示例
  • 了解更多
moveCollection

版本8.0.

将单个未分片集合移动到不同的分区。在管理数据库中使用 分区 时,运行 moveCollection 命令与 mongos 实例。

此命令适用于以下环境中的部署

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

注意

此命令在 Atlas 共享层或 Atlas Serverless 上不可用。

您不能使用 moveCollection 为以下用途

该命令具有以下语法

db.adminCommand(
{
moveCollection: "<database>.<collection>",
toShard: "<ID of the recipient shard>",
}
)

该命令包含以下字段:

字段
类型
描述
moveCollection
字符串
要移动的数据库和集合名称。
toShard
字符串
接收方分片的ID。

在移动集合之前,请确保满足以下要求

  • 您的应用程序可以容忍在受影响的集合阻止写入的两秒钟期间。在此期间,您的应用程序将经历延迟增加。

  • 您的数据库满足以下资源需求

    • 确保您要移动集合到的分片有足够的空间来存储集合及其索引。目标分片需要至少 (集合存储大小 + 索引大小) * 2 字节可用。

    • 确保您的I/O容量低于50%。

    • 确保您的CPU负载低于80%。

重要

数据库不强制执行这些要求。未能分配足够资源可能导致

  • 数据库空间不足并关闭

  • 性能下降

  • 操作时间比预期长

如果您的应用程序有时间流量较轻的时段,尽可能在该时段内对集合执行此操作。

此示例将名为 inventory 的无分片集合从 app 数据库移动到 shard02 分片。

db.adminCommand(
{
moveCollection: "app.inventory",
toShard: "shard02"
}
)

要获取可用分片ID的列表,运行 sh.status()。有关详细信息,请参阅 sh.status() 输出示例。

返回

moveChunk