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

sh.addShardToZone()(mongosh方法)

sh.addShardToZone(shard, zone)

将分片与区域关联。 MongoDB 将此分片与给定区域关联。 该区域覆盖的数据块将分配给与该区域关联的分片。

重要

mongosh 方法

本页面提供 mongosh 方法的相关信息。这不是数据库命令或特定语言驱动程序(例如 Node.js)的相关文档。

有关数据库命令,请参阅 addShardToZone 命令。

如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。

此方法具有以下参数:

Parameter
类型
说明

字符串

字符串

与分片关联的区域的名称

仅在连接到 实例时发出sh.addShardToZone() mongos

此方法可用于以下环境中托管的部署:

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

重要

M0 和 Flex 集群不支持此命令。有关更多信息,请参阅不支持的命令。

您可以将一个区域与多个分片关联,一个分片也可以与多个区域关联。

有关分片集群中区域的更多信息,请参阅区域手册页面。

MongoDB 实际上会忽略至少没有一个与之关联的分片键值范围的区域。

要将分片键值范围与区域关联,请使用sh.updateZoneKeyRange()方法。

您可以在未分片的集合或不存在的集合上运行 updateZoneKeyRange 数据库命令及其助手 sh.updateZoneKeyRange() sh.addTagRange()

提示

通过对空集合或不存在的集合进行分片之前定义区域和区域范围,分片集合操作会为定义的区域范围创建数据块以及任何其他数据块,以覆盖分片键值的整个范围,并执行基于区域范围的初始数据块分配。数据块的初始创建和分布可以更快地设置区域分片。在初始分布之后,负载均衡器将管理未来的数据段分布。

有关示例,请参阅为空集合或不存在的集合预先定义区域和区域范围

对于强制执行访问控制的分片集群,您必须以具有以下任一权限的用户身份进行身份验证:

clusterAdminclusterManager内置角色具有发出sh.addShardToZone()的适当权限。 有关更多信息,请参阅基于角色的访问控制手册页。

以下示例添加了三个区域NYCLAXNRT ,并将每个区域与一个分片相关联:

sh.addShardToZone("shard0000", "JFK")
sh.addShardToZone("shard0001", "LAX")
sh.addShardToZone("shard0002", "NRT")

一个分片可以与多个区域关联。 以下示例将LGAshard0000关联:

sh.addShardToZone("shard0000", "LGA")

shard0000 同时与LGA区域和JFK区域关联。 在均衡集群中,MongoDB 会将任一区域覆盖的读取和写入路由到shard0000