Definición
sh.addTagRange(namespace, minimum, maximum, tag)Nota
Este método tiene un alias para
sh.updateZoneKeyRange(). MongoDB proporciona fragmentación de zonas como sucesora de la fragmentación basada en etiquetas.Adjunta un rango de valores de clave de fragmento a una etiqueta de fragmento creada mediante el
sh.addShardTag()método.Puede ejecutar el comando de base
updateZoneKeyRangesh.updateZoneKeyRange()de datos y sus ayudantes ysh.addTagRange()en una colección no fragmentada o en una colección inexistente.sh.addTagRange()toma los siguientes argumentos:ParameterTipoDescripciónnamespacestring
El espacio de nombres de la colección particionada a etiquetar.
minimumDocumento
El valor mínimo del rango de claves de fragmento que se incluirá en la etiqueta. El mínimo es una coincidencia inclusiva. Especifique el valor mínimo en formato.
<fieldname>:<value>Este valor debe ser del mismo tipo o tipos de BSON que la clave de fragmento.maximumDocumento
El valor máximo del rango de claves de fragmento que se incluirá en la etiqueta. El máximo es una coincidencia exclusiva. Especifique el valor máximo en formato
<fieldname>:<value>. Este valor debe ser del mismo tipo o tipos de BSON que la clave de fragmento.tagstring
El nombre de la etiqueta a la que se adjuntará el rango especificado por los argumentos
minimumymaximum.Utilice para garantizar que el balanceador migre los documentos que existen dentro del rango especificado a un fragmento o conjunto de fragmentos
sh.addShardTag()específicos.Solo emite
sh.addTagRange()cuando estés 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
Límites
Los rangos de zona siempre incluyen el límite inferior y excluyen el límite superior.
Distribución inicial de fragmentos para colecciones vacías o inexistentes
Si está considerando fragmentar zonas en una colección vacía o inexistente, use para crear las zonas sh.addTagRange() y los rangos de zonas antes de fragmentar la colección. Crear zonas y rangos de zonas en colecciones vacías o inexistentes permite a MongoDB optimizar el proceso inicial de creación y distribución de fragmentos al fragmentar la colección. Este proceso optimizado permite una configuración más rápida de la fragmentación por zonas con menos sobrecarga del balanceador que crear zonas después de la fragmentación.El balanceador realiza toda la gestión de fragmentos después de la creación y distribución inicial optimizada de fragmentos.
Para obtener un ejemplo de cómo definir zonas y rangos de zonas para la distribución inicial de fragmentos, consulte Predefinir zonas y rangos de zonas para una colección vacía o inexistente.
Distribución inicial de fragmentos con claves de fragmentos con hash compuesto
MongoDB admite la fragmentación de colecciones en índices con hash compuesto. Al fragmentar la colección vacía o inexistente en una clave de fragmento con hash compuesto, MongoDB optimiza la creación y distribución inicial de fragmentos.
Si el campo hash es el prefijo de la clave de fragmento (es decir, el primer campo en la clave de fragmento), todo lo siguiente debe ser verdadero para que MongoDB realice la creación y distribución del fragmento inicial:
La colección tiene un rango de zona único con
MinKeypara todos los campos de límite inferior yMaxKeypara todos los campos de límite superior.sh.shardCollection()especifica la opción presplitHashedZones: true.
Si el campo con hash no es el prefijo de la clave de fragmento (es decir, la clave de fragmento tiene uno o más campos principales no con hash), todo lo siguiente debe ser verdadero para que MongoDB realice la creación y distribución del fragmento inicial:
La colección tiene un rango de zona para cada combinación de valores de campo de prefijo distintos (es decir, todos los campos que preceden al campo hash).
Para el límite inferior de cada rango de zona, especifique
MinKeypara el campo con hash y todos los campos subsiguientes.Para cada rango de zona, al menos un campo de prefijo de límite superior debe ser diferente de su contraparte de límite inferior.
sh.shardCollection()especifica la opción presplitHashedZones: true.
Para obtener un ejemplo más completo de cómo definir zonas y rangos de zonas para la distribución inicial de fragmentos en una clave de fragmento con hash compuesto, consulte Predefinir zonas y rangos de zonas para una colección vacía o inexistente.
Colecciones abandonadas
Al descartar una colección, se borran sus rangos de zona/etiqueta asociados.
En versiones anteriores, MongoDB no remueve las asociaciones de etiquetas de una colección descartada y, si luego creas una nueva colección con el mismo nombre, las asociaciones de etiquetas antiguas se aplicarán a la nueva colección.
Ejemplo
Dada una clave de fragmento de {state: 1, zip: 1}, la siguiente operación crea un rango de etiquetas que cubre los códigos postales del estado de Nueva York:
sh.addTagRange( "exampledb.collection", { state: "NY", zip: MinKey }, { state: "NY", zip: MaxKey }, "NY" )