Definición
sh.removeRangeFromZone(namespace, minimum, maximum)Elimina la asociación entre un rango de valores de la clave de partición y un zona.
sh.removeRangeFromZone()requiere los siguientes campos:ParameterTipoDescripciónnamespacestring
El espacio de nombres de la colección particionada a asociar con la zona.
La colección debe estar particionada para que la operación tenga éxito.
minimumDocumento
El límite inferior inclusivo del rango de valores de la clave de partición.
Especifique cada campo de la clave de partición en la forma de
<fieldname> : <value>. El valor debe ser del mismo tipo BSON o tipos que la clave de partición.maximumDocumento
El límite superior exclusivo del rango de valores de la clave de partición.
Especifique cada campo de la clave de partición en la forma de
<fieldname> : <value>. El valor debe ser del mismo tipo BSON o tipos que la clave de partición.Usa
sh.removeRangeFromZone()para remover la asociación entre rangos de claves de partición no utilizados, obsoletos o en conflicto y una zona.Si ningún rango coincide con los límites máximos y mínimos pasados a
sh.removeRangeFromZone(), no se elimina nada.Ejecutar
sh.removeRangeFromZone()solamente cuando esté conectado a una instanciamongos.
Compatibilidad
Este método está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Importante
Este comando no es compatible con los clústeres M0 y Flex. Para obtener más información, consulta Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Comportamiento
sh.removeRangeFromZone() no elimina la asociación entre una zona y una partición. Tampoco remueve la propia zona.
Consulte la página del manual de zonas para obtener más información sobre las zonas en clústeres particionados.
Balanceador
Eliminar la asociación entre un rango y una zona elimina las restricciones que mantienen los fragmentos cubiertos por el rango en las particiones dentro de esa zona. Durante la próxima ronda del equilibrador, este puede migrar fragmentos que anteriormente estaban cubiertos por la zona.
Consulta la documentación del balanceador de clusters fragmentados para obtener más información sobre cómo funcionan las migraciones en un cluster fragmentado.
Seguridad
Para los clústeres particionados que se ejecutan con autenticación, debes autenticarte como:
un usuario cuyos privilegios incluyen las acciones especificadas en varias colecciones de la base de datos
config:o, alternativamente
un usuario cuyos privilegios incluyan
enableShardingsobre el recurso clúster.
Los clusterAdmin o los clusterManager roles integrados tienen los permisos apropiados para ejecutar sh.removeRangeFromZone(). Consulta la página de documentación sobre Control de acceso basado en roles para más información.
Ejemplo
Dada una colección particionada exampledb.collection con una clave de partición { a
: 1 }, la siguiente operación elimina el rango con un límite inferior de 1 y un límite superior de 10:
sh.removeRangeFromZone( "exampledb.collection", { a : 1 }, { a : 10 } )
El min y el max deben coincidir exactamente con los límites del rango objetivo. La siguiente operación intenta remover el rango creado previamente, pero especifica { a : 0 } como el límite min:
admin = db.getSiblingDB("admin") admin.runCommand( { updateZoneKeyRange : "exampledb.collection", min : { a : 0 }, max : { a : 10 }, zone : null } )
Si bien el rango de { a : 0 } y { a : 10 } abarca el rango existente, no es una coincidencia exacta y, por lo tanto, sh.removeRangeFromZone() no elimina nada.
Clave compuesta de fragmento
Dada una colección particionada exampledb.collection con una clave de partición { a : 1, b : 1 }, la siguiente operación elimina el rango con un límite inferior de { a : 1, b : 1} y un límite superior de { a : 10, b : 10 }:
sh.removeRangeFromZone( "exampledb.collection", { a : 1, b : 1 }, { a : 10, b : 10 } )
En el ejemplo anterior, si existía un rango previo con un límite inferior de { a : 1, b : 5 } y un límite superior de { a : 10, b : 1 }, la operación no removería ese rango, ya que no es una coincidencia exacta con el mínimo y máximo pasados a sh.removeRangeFromZone().