Definición
sh.removeRangeFromZone(namespace, minimum, maximum)Elimina la asociación entre un rango de valores de clave de fragmento y una zona.
sh.removeRangeFromZone()requiere los siguientes campos:ParameterTipoDescripciónnamespacestring
El espacio de nombres de la colección fragmentada que se asociará con la zona.
La colección debe estar fragmentada 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 clave de fragmento.
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.Utilice
sh.removeRangeFromZone()para eliminar la asociación entre rangos de claves de fragmentos no utilizados, obsoletos o conflictivos 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.Ejecute
mongossolosh.removeRangeFromZone()cuando esté conectado a una instancia.
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.
Consulte la documentación del equilibrador de clúster fragmentado para obtener más información sobre cómo funcionan las migraciones en un clúster fragmentado.
Seguridad
Para los clústeres fragmentados que se ejecutan con autenticación, debe autenticarse como:
un usuario cuyos privilegios incluyen las acciones especificadas en varias colecciones en la base de datos
config:o, alternativamente
un usuario cuyos privilegios incluyan
enableShardingsobre el recurso clúster.
Los roles clusterAdmin integrados o tienen los permisos adecuados para clusterManager sh.removeRangeFromZone() ejecutar. Consulte la documentación sobre el control de acceso basado en roles para obtener 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().