对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

moveCollection(数据库命令)

moveCollection

8.0版本新增。

将单个未分片集合移动到不同的分分片。 moveCollectionmongos使用 管理员数据库 时,通过 实例运行 。

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

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud

重要

This command is not supported in M0 and Flex clusters. For more information, see Unsupported Commands.

不能将 moveCollection 用于Queryable Encryption集合。

该命令具有以下语法:

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

注意

使用 listShards 命令检索接收分片的ID 。

该命令接受以下字段:

字段
类型
说明

moveCollection

字符串

要移动的数据库和集合名称。

toShard

字符串

接收分片的 ID。

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

  • 您的应用程序可以允许受影响的集合块进行两秒钟的写入。 在写入受阻期间,应用程序的延迟会增加。

  • 您的数据库符合这些资源要求:

    • 确保分片集合移动到的分片具有足够的存储空间用于集合及其索引。 目标分分片需要至少( Collection storage size + Index Size ) * 2字节可用。

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

    • 确保 CPU 负载低于80 %。

重要

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

  • 数据库空间不足并关闭

  • 性能下降

  • 操作花费的时间比预期长

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

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

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

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