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

sh.removeRangeFromZone()

在此页面上

  • 定义
  • 兼容性
  • 行为
  • 例子
sh.removeRangeFromZone(namespace, minimum, maximum)

删除范围分分片键与区域之间的关联。

sh.removeRangeFromZone() 采用以下字段:

Parameter
类型
说明
namespace
字符串

与区域关联的分片collection的命名空间

必须对集合进行分片才能使操作成功。

minimum
文档

片键值范围的下限(含)。

<fieldname> : <value>的形式指定分片键的每个字段。 该值必须与分片键具有相同的 BSON 类型。

maximum
文档

片键值范围的独占上限。

<fieldname> : <value>的形式指定分片键的每个字段。 该值必须与分片键具有相同的 BSON 类型。

使用sh.removeRangeFromZone()删除未使用、已过期或有冲突的分片键范围与区域之间的关联。

如果没有范围与传递给sh.removeRangeFromZone()的最小和最大边界匹配,则不会删除任何内容。

仅在连接到mongos实例时运行sh.removeRangeFromZone()

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

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

重要

M 0 、M 2和 M 5集群不支持此命令。 有关更多信息,请参阅不支持的命令。

sh.removeRangeFromZone() 不会删除区域和分片之间的关联。 它也不会删除区域本身。

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

删除范围和区域之间的关联会删除在该区域内的分片上保持范围所覆盖的数据段的约束。 在负载均衡器的下一个回合中,负载均衡器可能会迁移该区域之前覆盖的数据块。

有关迁移如何在分片集群中工作的更多信息,请参阅分片集群负载均衡器的文档。

对于使用身份验证运行的分片集群,您必须通过以下任一项身份验证:

  • 其权限包括对config数据库中的各种集合执行指定操作的用户:

    或者,或者,

  • 权限包括对enableSharding 集群 资源的 的用户。

clusterAdminclusterManager内置角色具有运行sh.removeRangeFromZone()的适当权限。 有关更多信息,请参阅基于角色的访问控制的文档页面。

给定一个分片键为{ a : 1 }的分片collectionexampledb.collection ,以下操作删除下限为1且上限为10的范围:

sh.removeRangeFromZone( "exampledb.collection",
{ a : 1 },
{ a : 10 }
)

minmax必须与目标范围的边界完全匹配。 以下操作尝试删除之前创建的范围,但将{ a : 0 }指定为min边界:

admin = db.getSiblingDB("admin")
admin.runCommand(
{
updateZoneKeyRange : "exampledb.collection",
min : { a : 0 },
max : { a : 10 },
zone : null
}
)

虽然{ a : 0 }{ a : 10 }的范围包含现有范围,但它不是精确匹配,因此sh.removeRangeFromZone()不会删除任何内容。

给定一个分片键为{ a : 1, b : 1 }的分片collectionexampledb.collection ,以下操作删除下限为{ a : 1, b : 1}且上限为{ a : 10, b : 10 }的范围:

sh.removeRangeFromZone( "exampledb.collection",
{ a : 1, b : 1 },
{ a : 10, b : 10 }
)

在前面的示例中,如果存在下限为{ a : 1, b : 5 }且上限为{ a : 10, b : 1 }的现有范围,则该操作不会删除该范围,因为它与传递给 的最小值和最大值不精确匹配。 sh.removeRangeFromZone()

后退

sh.moveChunk