Definici贸n
sh.updateZoneKeyRange(namespace, minimum, maximum, zone)Novedad en la versi贸n 3.4.
Asocia un rango de valor de la clave de partici贸n con una zona.
Puedes ejecutar el comando de base de datos
updateZoneKeyRangey sus asistentessh.updateZoneKeyRange()ysh.addTagRange()en una colecci贸n no particionada o una colecci贸n inexistente.Importante
M茅todo mongosh
Esta p谩gina documenta un m茅todo
mongosh. Esta no es la documentaci贸n para los comandos de base de datos ni para los drivers espec铆ficos de lenguajes, como Nodo.js.Para el comando de base de datos, consulta el comando
updateZoneKeyRange.Para los drivers de API de MongoDB, consulte la documentaci贸n del driver de MongoDB espec铆fica del lenguaje.
sh.updateZoneKeyRange()toma los siguientes argumentos:ParameterTipoDescripci贸nnamespacestring
El namespace de la colecci贸n fragmentada asociada con el
zone.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.Para usar particionado con hash, el valor del campo debe ser de tipo
NumberLong.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.Para usar particionado con hash, el valor del campo debe ser de tipo
NumberLong.zonestring
El nombre de la zona con la que asociar el rango de valores de la clave de partici贸n delimitados por
minimumymaximum.Solo emite
sh.updateZoneKeyRange()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, M2, y M5. Para obtener m谩s informaci贸n, consulte Comandos incompatibles.
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
No puedes crear un rango de valores de la clave de partici贸n cuyos l铆mites inferior y superior se superpongan con un rango existente para la colecci贸n particionada. Por ejemplo, dado un **rango** existente de 1 a 10, no puede crear un nuevo **rango** de 5 a 20, ya que el nuevo **rango** se superpondr铆a con el **rango** existente.
Una zona puede tener m煤ltiples rangos de datos asociados a ella, pero un rango como m谩ximo puede estar asociado con una sola zona.
Consulte la p谩gina del manual de zonas para obtener m谩s informaci贸n sobre las zonas en cl煤steres particionados.
Distribuci贸n inicial de fragmentos para colecciones vac铆as o inexistentes
Si est谩s considerando realizar particionado de zonas en una colecci贸n vac铆a o inexistente, utiliza sh.updateZoneKeyRange() para crear las zonas y rangos de zonas antes de dividir la colecci贸n (desde la versi贸n 4.0.2). A partir de la versi贸n 4.0.3, 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 particionar la colecci贸n. Este proceso optimizado permite una configuraci贸n m谩s r谩pida de particionamiento por zonas con menos sobrecarga del equilibrador que la creaci贸n de zonas despu茅s del particionamiento. El balanceador realiza toda la gesti贸n de fragmentos despu茅s de la optimizaci贸n inicial de creaci贸n y distribuci贸n de fragmentos.
Para un ejemplo de c贸mo definir zonas y rangos de zonas para la distribuci贸n inicial de fragmentos, consulta Predefine zonas y rangos de zonas para una colecci贸n vac铆a o inexistente.
Distribuci贸n inicial de fragmentos con claves de partici贸n compuestas con hash
MongoDB ofrece soporte al particionado de colecciones en 铆ndices compuestos encriptados. MongoDB puede realizar una creaci贸n y distribuci贸n optimizadas de particiones iniciales al fragmentar la colecci贸n vac铆a o inexistente usando una clave de partici贸n compuesta con hash.
Si el campo encriptada es el prefijo de la clave de partici贸n (es decir, el primer campo en la clave de partici贸n), todo lo siguiente debe ser cierto para que MongoDB realice la creaci贸n inicial y la distribuci贸n de fragmentos:
La colecci贸n tiene un 煤nico rango de zona con
MinKeypara todos los campos l铆mite inferior yMaxKeypara todos los campos l铆mite superior.sh.shardCollection()especifica la opci贸n presplitHashedZones: true.
Si el campo encriptado no es el prefijo de la clave de partici贸n (es decir, la clave de partici贸n tiene uno o m谩s campos iniciales no encriptados), deben cumplirse todas las siguientes condiciones para que MongoDB realice la creaci贸n y distribuci贸n inicial de fragmentos:
La colecci贸n tiene un rango de zona para cada combinaci贸n de valores de campo de prefijo distintos (es decir, todos los campos anteriores al campo encriptado).
Para el l铆mite inferior de cada rango de zona, especifica
MinKeypara el campo encriptada y todos los campos posteriores.Para cada rango de zona, al menos un campo de prefijo de l铆mite superior debe diferir de su equivalente en el l铆mite inferior.
sh.shardCollection()especifica la opci贸n presplitHashedZones: true.
Para un ejemplo m谩s completo de c贸mo definir zonas y rangos de zonas para la distribuci贸n inicial de fragmentos en una claves de partici贸n compuestas con hash, consulte Predefine zonas y rangos de zonas para una colecci贸n vac铆a o inexistente.
Balanceador
Despu茅s de asociar un rango a una zona, el balanceador debe ejecutarse primero para migrar cualquier fragmento cuyos rangos est茅n cubiertos por la zona a las particiones en el interior de dicha zona. Hasta que se complete el equilibrio, algunos fragmentos pueden residir en la partici贸n incorrecta dada la zonas configuradas para el cl煤ster. Consulte balanceador para obtener m谩s informaci贸n.
Consulta la p谩gina del manual de balanceador de cl煤ster para obtener m谩s informaci贸n sobre c贸mo funcionan las migraciones en un cl煤ster.
L铆mites
Los rangos de zona siempre incluyen el l铆mite inferior y excluyen el l铆mite superior.
Colecciones descartadas
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.
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.
Las clusterAdmin o clusterManager roles integradas tienen los permisos adecuados para emitir sh.updateZoneKeyRange(). Consulta la p谩gina de documentaci贸n sobre Control de Acceso Basado en Roles para obtener m谩s informaci贸n.
Ejemplos
Dada una colecci贸n particionada exampledb.collection con una clave de partici贸n { a
: 1 }, la siguiente operaci贸n crea un rango con un l铆mite inferior de 1 y un l铆mite superior de 10 en la zona alpha:
sh.updateZoneKeyRange( "exampledb.collection", { a : 1 }, { a : 10 }, "alpha" )
La siguiente operaci贸n elimina el rango creado anteriormente al pasar null al campo zone.
sh.updateZoneKeyRange( "exampledb.collection", { a : 1 }, { a : 10 }, null )
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:
sh.updateZoneKeyRange( "exampledb.collection", { a : 0 }, { a : 10 }, null )
Aunque el rango de { a : 0 } y { a : 10 } abarca el rango existente, no es una coincidencia exacta y, por lo tanto, updateZoneKeyRange no remueve nada.
Clave compuesta de fragmento
Dada una colecci贸n particionada exampledb.collection con una clave de partici贸n de { a
: 1, b : 1 }, la siguiente operaci贸n crea un rango que abarca el l铆mite inferior de { a: 1, b : 1 } y un l铆mite superior de { a : 10, b : 10}, y lo asocia con la zona alpha:
sh.updateZoneKeyRange( "exampledb.collection", { a : 1, b : 1 }, { a : 10, b : 10 }, "alpha" )
Predecir zonas y rangos de zonas para una colecci贸n vac铆a o inexistente
Si creas zonas y rangos de zonas en colecciones vac铆as o inexistentes, MongoDB podr铆a 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 particionamiento zonificado con menos sobrecarga de balanceador que la creaci贸n de zonas despu茅s del particionamiento. El balanceador realiza toda la gesti贸n de fragmentos despu茅s de la creaci贸n y distribuci贸n inicial optimizada de fragmentos. Para obtener m谩s informaci贸n, consulta Distribuci贸n Inicial de fragmentos con claves de partici贸n compuestas con hash para obtener m谩s informaci贸n.
Las secciones siguientes contienen ejemplos de tres tipos diferentes de claves de partici贸n.
Considera los siguientes ejemplos, que exploran la predefinici贸n de zonas o rangos de zonas para tres tipos diferentes de clave de partici贸n:
Claves de partici贸n 煤nicas o compuestas
Nota
Este ejemplo solo se aplica a claves de partici贸n de un solo campo o compuestas sin un campo encriptada.
Por ejemplo, { "zip" : 1 } o { "zip" : 1, "account" : 1}
Crear las zonas
Utilice sh.addShardToZone() para crear las zonas:
sh.addShardToZone("shardA", "DC1") sh.addShardToZone("shardB", "DC2")
Crear los rangos de zonas
Utiliza sh.updateZoneKeyRange() para crear los rangos para la colecci贸n vac铆a contacts en la base de datos exampledb:
sh.updateZoneKeyRange( "exampledb.contacts", { zip: 10001 }, { zip: 10090 }, "DC1" ); sh.updateZoneKeyRange( "exampledb.contacts", { zip: 90001 }, { zip: 96054 }, "DC2" );
Opcional: activa el particionado para la base de datos
Omita este paso si ya activ贸 el particionado en la base de datos.
Usa sh.enableSharding() para habilitar el particionado en la base de datos:
sh.enableSharding("exampledb")
Fragmenta la colecci贸n
Nota
Si la colecci贸n no existe, la operaci贸n de particionado crea la colecci贸n.
Si la colecci贸n est谩 vac铆a y no existe un 铆ndice que admita la clave de partici贸n, la operaci贸n de particionado crea el 铆ndice.
Utiliza sh.shardCollection() para fragmentar la colecci贸n contacts:
sh.shardCollection("exampledb.contacts", { zip: 1 } );
Revisa los fragmentos creados y su distribuci贸n
Para ver los fragmentos creados y su distribuci贸n, ejecuta la operaci贸n sh.status():
sh.status()
El m茅todo devuelve:
--- Sharding Status --- sharding version: { "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, "clusterId" : ObjectId("5b80c06d35a961fd0ae1986d") } shards: { "_id" : "shardA", "host" : "shardA/mongodb0.example.net:27018,mongodb1.example.net:27018,mongodb2.example.net:27018", "state" : 1, "tags" : [ "DC1" ] } { "_id" : "shardB", "host" : "shardB/mongodb3.example.net:27018,mongodb4.example.net:27018,mongodb5.example.net:27018", "state" : 1, "tags" : [ "DC2" ] } active mongoses: "4.2.0" : 2 autosplit: Currently enabled: yes balancer: Currently enabled: yes Currently running: no Failed balancer rounds in last 5 attempts: 0 Migration Results for the last 24 hours: No recent migrations databases: { "_id" : "config", "primary" : "config", "partitioned" : true } { "_id" : "exampledb", "primary" : "shardA", "partitioned" : true, "version" : { "uuid" : UUID("6c351bcf-acd2-4fd9-82d8-9f6bd7321558"), "lastMod" : 1 } } exampledb.contacts shard key: { "zip" : 1 } unique: false balancing: true chunks: shardA 3 shardB 2 { "zip" : { "$minKey" : 1 } } -->> { "zip" : 10001 } on : shardA Timestamp(1, 0) { "zip" : 10001 } -->> { "zip" : 10090 } on : shardA Timestamp(1, 1) { "zip" : 10090 } -->> { "zip" : 90001 } on : shardB Timestamp(1, 2) { "zip" : 90001 } -->> { "zip" : 96054 } on : shardB Timestamp(1, 3) { "zip" : 96054 } -->> { "zip" : { "$maxKey" : 1 } } on : shardA Timestamp(1, 4) tag: DC1 { "zip" : 10001 } -->> { "zip" : 10090 } tag: DC2 { "zip" : 90001 } -->> { "zip" : 96054 }
Para la colecci贸n, la operaci贸n de particionado cre贸 5 fragmentos (dos fragmentos que corresponden a los rangos de zonas y los otros tres para cubrir todos los dem谩s valores) en shardA y shardB.
Clave de partici贸n compuesta con hash con prefijo hash
Nota
Este ejemplo solo se aplica a claves de partici贸n compuestas con hash donde el campo con hash es el prefijo de la clave de partici贸n (es decir, el primer campo de la clave de partici贸n se divide en hash).
Por ejemplo, { "_id" : "hashed", "facility" : 1 }
MongoDB admite el particionado sobre 铆ndices encriptada compuestos. Al particionar en claves de partici贸n compuestas con hash, MongoDB puede realizar una creaci贸n y distribuci贸n inicial optimizada de fragmentos sobre la colecci贸n vac铆a o inexistente solo si los rangos de zona definidos cumplen requisitos adicionales.
Considera una colecci贸n vac铆a examples.metrics que almacenar谩 an谩lisis de una de las dos instalaciones de fabricaci贸n. La clave de partici贸n prevista es { "_id" : "hashed", "facility" : 1}, donde el campo encriptada es el prefijo de la clave de partici贸n.
Crear las zonas
La clave de partici贸n planificada es { "_id" : "hashed", "facility" : 1 }. Dado que el campo encriptada es el prefijo (es decir, el primer campo en la clave de partici贸n), cree una zona 煤nica usando sh.addShardToZone():
sh.addShardToZone("shardA", "FacilityAlpha") sh.addShardToZone("shardB", "FacilityAlpha")
Crear los rangos de zonas
La distribuci贸n inicial de fragmentos en una clave de fragmentaci贸n con hash compuesta con un prefijo de hash requiere un rango de zona 煤nico con MinKey para todos los campos de l铆mite inferior y MaxKey para todos los campos de l铆mite superior.
Usa sh.updateZoneKeyRange() para crear un solo rango:
sh.updateZoneKeyRange( "examples.metrics", { "_id" : MinKey, "facility" : MinKey }, { "_id" : MaxKey, "facility" : MaxKey }, "FacilityAlpha" );
Opcional: activa el particionado para la base de datos
Omita este paso si ya activ贸 el particionado en la base de datos.
Usa sh.enableSharding() para habilitar el particionado en la base de datos:
sh.enableSharding("examples")
Fragmenta la colecci贸n
Nota
Si la colecci贸n no existe, la operaci贸n de particionado crea la colecci贸n.
Si la colecci贸n est谩 vac铆a y no existe un 铆ndice que admita la clave de partici贸n, la operaci贸n de particionado crea el 铆ndice.
Usar sh.shardCollection() con presplitHashedZones: true para particionar la colecci贸n y realizar la creaci贸n y distribuci贸n inicial de fragmentos:
sh.shardCollection( "examples.metrics", { "_id" : "hashed", "facility" : 1 }, false, { presplitHashedZones: true } )
Revisa los fragmentos creados y su distribuci贸n
Para ver los fragmentos creados y su distribuci贸n, ejecuta la operaci贸n sh.status():
sh.status()
La salida se asemeja a lo siguiente (contenido omitido por legibilidad):
--- Sharding Status --- databases: { "_id" : "config", "primary" : "config", "partitioned" : true } { "_id" : "examples", "primary" : "shardA", "partitioned" : true, "version" : { "uuid" : UUID("245f8abf-a363-48b0-8208-2a5b577bbb4e"), "lastMod" : 1 } } examples.metrics shard key: { "_id" : "hashed", "facility" : 1 } unique: false balancing: true chunks: shardA 2 shardB 2 { "_id" : { "$minKey" : 1 }, "facility" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("-4611686018427387902"), "facility" : { "$minKey" : 1 } } on : shardA Timestamp(1, 0) { "_id" : NumberLong("-4611686018427387902"), "facility" : { "$minKey" : 1 } } -->> { "_id" : NumberLong(0), "facility" : { "$minKey" : 1 } } on : shardA Timestamp(1, 1) { "_id" : NumberLong(0), "facility" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("4611686018427387902"), "facility" : { "$minKey" : 1 } } on : shardB Timestamp(1, 2) { "_id" : NumberLong("4611686018427387902"), "facility" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 }, "facility" : { "$maxKey" : 1 } } on : shardB Timestamp(1, 3) tag: FacilityAlpha { "_id" : { "$minKey" : 1 }, "facility" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 }, "facility" : { "$maxKey" : 1 } }
La operaci贸n de particionado gener贸 un total de 4 fragmentos. Dos fragmentos corresponden a los l铆mites inferiores y superiores absolutos. Se cre贸 una zona en shardA y shardB correspondiente a FacilityAlpha. La zona se subdividi贸 en 2 fragmentos utilizando el campo encriptada.
Clave de partici贸n compuesta encriptada con campo encriptado sin prefijo
Nota
Este ejemplo s贸lo se aplica a claves de partici贸n compuestas con hash donde el campo con hash no es el prefijo de la clave de partici贸n (es decir, el primer campo en la clave de partici贸n no est谩 hasheado).
Por ejemplo, { "facility" : 1, "_id" : "hashed" }
MongoDB admite el particionado sobre 铆ndices encriptada compuestos. Al particionar en claves de partici贸n compuestas con hash, MongoDB puede realizar una creaci贸n y distribuci贸n inicial optimizada de fragmentos sobre la colecci贸n vac铆a o inexistente solo si los rangos de zona definidos cumplen requisitos adicionales.
Considere una colecci贸n vac铆a examples.metrics que almacenar谩 an谩lisis de una de las dos instalaciones de fabricaci贸n. La clave de partici贸n planificada es { "facility" : 1, "_id" : "hashed" }, donde el campo encriptada NO es el prefijo clave de partici贸n.
El campo
facilityalmacena el nombre del establecimiento:"FacilityAlpha"o"FacilityBaker". La colecci贸n requiere rangos de zonas enfacilitypara ayudar a aislar los datos de cada instalaci贸n a particiones espec铆ficos.El campo
_idcompensa la baja cardinalidad del campofacility. El hash compensa la naturaleza mon贸tonamente creciente del campo_id.
Crear las zonas
Use el comando sh.addShardToZone() para crear las zonas.
sh.addShardToZone("shardA", "FacilityAlpha") sh.addShardToZone("shardB", "FacilityBaker")
Crear los rangos de zonas
La clave de partici贸n planificada es {"facility" : 1, "_id" : "hashed"}. El campo facility tiene dos valores posibles: FacilityAlpha y FacilityBaker.
La distribuci贸n inicial de fragmentos en claves de partici贸n compuestas con hash donde el campo con hash no es el prefijo requiere un rango de zona para cada combinaci贸n de valores de campo de prefijo distintos (es decir, todos los campos que preceden al campo encriptada). Dado que facility tiene dos valores de prefijo distintos, la colecci贸n requiere exactamente dos rangos de zonas que cubran esos valores.
El rango de l铆mite inferior especifica
MinKeypara todos los campos que no son prefijos.El rango superior tiene al menos un campo de prefijo que difiere de su contraparte inferior.
Utiliza sh.updateZoneKeyRange() para crear el rango para "facility": "FacilityAlpha":
sh.updateZoneKeyRange( "examples.metrics", { "facility": "FacilityAlpha", "_id" : MinKey }, { "facility": "FacilityBaker", "_id" : MinKey }, "FacilityAlpha" );
Dado que los l铆mites superiores del rango de zonas son exclusivos, este rango s贸lo cubre documentos con el valor del prefijo de clave de partici贸n distinto
"facilty" : "FacilityAlpha"y todos los valores posibles de_id.
Utiliza sh.updateZoneKeyRange() para crear el rango para "facility": "FacilityBaker":
sh.updateZoneKeyRange( "examples.metrics", { "facility": "FacilityBaker", "_id" : MinKey }, { "facility": MaxKey, "_id" : MinKey }, "FacilityBaker" );
Aunque el l铆mite superior de este rango puede captar t茅cnicamente otros valores de
facility, la l贸gica inicial de distribuci贸n de fragmentos se basa en la suposici贸n de que no existen otros valores distintos parafacility. Dado que la colecci贸n solo contiene documentos dondefacilityesFacilityAlphaoFacilityBaker, este rango solo cubre documentos con el valor de prefijo 煤nico de clave de partici贸n"facility" : "FacilityBaker"y todos los posibles valores de_id.
Opcional: activa el particionado para la base de datos
Omita este paso si ya activ贸 el particionado en la base de datos.
Usa sh.enableSharding() para habilitar el particionado en la base de datos:
sh.enableSharding("examples")
Fragmenta la colecci贸n
Nota
Si la colecci贸n no existe, la operaci贸n de particionado crea la colecci贸n.
Si la colecci贸n est谩 vac铆a y no existe un 铆ndice que admita la clave de partici贸n, la operaci贸n de particionado crea el 铆ndice.
Usar sh.shardCollection() con presplitHashedZones: true para particionar la colecci贸n y realizar la creaci贸n y distribuci贸n inicial de fragmentos:
sh.shardCollection( "examples.metrics", { "facility" : 1, "_id" : "hashed"}, false, { presplitHashedZones: true } )
Revisa los fragmentos creados y su distribuci贸n
Para ver los fragmentos creados y su distribuci贸n, ejecuta la operaci贸n sh.status():
sh.status()
La salida se asemeja a lo siguiente (contenido omitido por legibilidad):
--- Sharding Status --- databases: { "_id" : "config", "primary" : "config", "partitioned" : true } { "_id" : "examples", "primary" : "shardA", "partitioned" : true, "version" : { "uuid" : UUID("6c351bcf-acd2-4fd9-82d8-9f6bd7321558"), "lastMod" : 1 } } examples.metrics shard key: { "facility" : 1, "_id" : "hashed" } unique: false balancing: true chunks: shardA 3 shardB 3 { "facility" : { "$minKey" : 1 }, "_id" : { "$minKey" : 1 } } -->> { "facility" : "FacilityAlpha", "_id" : { "$minKey" : 1 } } on : shard1 Timestamp(1, 0) { "facility" : "FacilityAlpha", "_id" : { "$minKey" : 1 } } -->> { "facility" : "FacilityAlpha", "_id" : NumberLong(0) } on : shard1 Timestamp(1, 1) { "facility" : "FacilityAlpha", "_id" : NumberLong(0) } -->> { "facility" : "FacilityBaker", "_id" : { "$minKey" : 1 } } on : shard1 Timestamp(1, 2) { "facility" : "FacilityBaker", "_id" : { "$minKey" : 1 } } -->> { "facility" : "FacilityBaker", "_id" : NumberLong(0) } on : shard2 Timestamp(1, 3) { "facility" : "FacilityBaker", "_id" : NumberLong(0) } -->> { "facility" : { "$maxKey" : 1 }, "_id" : { "$minKey" : 1 } } on : shard2 Timestamp(1, 4) { "facility" : { "$maxKey" : 1 }, "_id" : { "$minKey" : 1 } } -->> { "facility" : { "$maxKey" : 1 }, "_id" : { "$maxKey" : 1 } } on : shard2 Timestamp(1, 5) tag: FacilityAlpha { "facility" : "FacilityAlpha", "_id" : { "$minKey" : 1 } } -->> { "facility" : "FacilityBaker", "_id" : { "$minKey" : 1 } } tag: FacilityBaker { "facility" : "FacilityBaker", "_id" : { "$minKey" : 1 } } -->> { "facility" : { "$maxKey" : 1 }, "_id" : { "$minKey" : 1 } }
La operaci贸n de particionado produjo un total de 6 fragmentos. Dos fragmentos corresponden a los l铆mites absolutos inferior y superior. Se crearon dos zonas, una en shardA y otra en shardB, correspondientes a FacilityAlpha y FacilityBaker. Cada una de estas zonas se ha subdividido a煤n m谩s en 2 fragmentos utilizando el campo encriptada.