Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
particionado

sh.shardCollection()

sh.shardCollection(namespace, key, unique, options)

Fragmenta una colección usando el key como clave de partición. La clave de partición determina cómo distribuye MongoDB los documentos de la colección entre las particiones.

El método mongosh sh.shardCollection() envuelve el comando shardCollection.

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 shardCollection.

Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del lenguaje.

sh.shardCollection() toma los siguientes argumentos:

Parameter
Tipo
Descripción

namespace

string

El namespace de la colección para particionar en la forma "<database>.<collection>".

key

Documento

El documento que especifica el campo o campos que se utilizarán como clave de partición.

{ <field1>: <1|"hashed">, ... }

Establezca el valor del campo en uno de los siguientes:

La clave de partición debe estar soportada por un índice. A menos que la colección esté vacía, el índice debe existir antes del comando shardCollection. Si la colección está vacía, MongoDB crea el índice antes de fragmentar la colección si el índice que puede soportar la clave de partición no existe todavía.

Ver también Índices de claves de fragmento

unique

booleano

opcional. Especifique true para garantizar que el índice subyacente aplique una restricción de unicidad. Por defecto false.

No puedes especificar true cuando utilizas claves de fragmentación con hash.

Si se especifica el documento options, se debe especificar explícitamente el valor para unique.

options

Documento

opcional. Un documento que contiene campos opcionales, incluidos numInitialChunks y collation.

La opción options admite las siguientes opciones:

Parameter
Tipo
Descripción

numInitialChunks

entero

opcional. Especifica la cantidad mínima de fragmentos a crear inicialmente al fragmentar una colección vacía con una clave de partición con hash. MongoDB luego crea y distribuye fragmentos en todo el clúster. El parámetro numInitialChunks debe ser menor que 8192 fragmentos por partición. El valor por defecto es 2 fragmentos por partición.

Si la colección no está vacía o la clave de partición no contiene un campo con hash, la operación devuelve un error.

  • Si se fragmenta con presplitHashedZones: true, MongoDB intenta distribuir uniformemente la cantidad especificada de fragmentos entre las zonas del clúster.

  • Si se utiliza particionamiento con presplitHashedZones: false o se omite y no se definen zonas ni rangos de zonas para la colección vacía, MongoDB intenta distribuir uniformemente el número especificado de fragmentos entre las particiones del clúster.

  • Si se realiza particionado con presplitHashedZones: false o se omiten y se han definido zonas y rangos de zonas para la colección vacía, numInitChunks no tiene efecto.

collation

Documento

opcional. Si la colección especificada para shardCollection tiene una intercalación por defecto, se debe incluir un documento de intercalación con { locale : "simple" }, o el comando shardCollection fallará. Al menos uno de los índices cuyos campos admiten el patrón de clave de partición debe tener la intercalación simple.

booleano

opcional. Especificar true para realizar la creación y distribución inicial de fragmentos para una colección vacía o inexistente en función de las zonas definidas y los rangos de zonas para la colección. Solo para particionado con hash.

shardCollection() con presplitHashedZones: true devuelve un error si se cumple alguna de las siguientes condiciones:

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.

Una vez que una colección ha sido particionada, MongoDB no proporciona ningún método para desfragmentar una colección particionada.

Si bien puedes cambiar tu clave de partición más adelante, es importante considerar cuidadosamente la elección de tu clave de partición para evitar problemas de escalabilidad y rendimiento.

Tip

Las claves de partición con hash utilizan un índice con hash o un índice compuesto con hash como clave de partición.

Utiliza el formulario field: "hashed" para especificar un campo clave de partición con hash.

Nota

Si las migraciones de fragmentos están en curso mientras se crea una colección de clave de partición con hash, la distribución inicial de fragmentos puede ser desigual hasta que el balanceador equilibre automáticamente la colección.

La operación de colección de partición (es decir, El shardCollection comando y el sh.shardCollection() asistente pueden realizar la creación inicial de fragmentos y la distribución para una colección vacía o inexistente si zonas y rangos de zonas han sido definidos para la colección. La distribución inicial de fragmentos permite una configuración más ágil del particionado por zonas. Tras la distribución inicial, el balanceador se encarga de la distribución de fragmentos siguiendo el procedimiento habitual.

Consulte Predefinir zonas y rangos de zonas para una colección vacía o inexistente para ver un ejemplo. Si se particionado una colección utilizando una clave de fragmentación clasificado por rango o una clave de partición con hash, la opción numInitialChunks no tiene efecto si se han definido zonas y rangos de zona para la colección vacía.

Para fragmentar una colección utilizando un índice encriptada compuesto, vea Distribución inicial de fragmentos con índices encriptadas compuestos.

MongoDB admite particionar colecciones en índices compuestos encriptados. Al fragmentar una colección vacía o inexistente utilizando una clave de fragmento hash compuesta, se aplican requisitos adicionales para que MongoDB pueda realizar la creación y distribución inicial de fragmentos.

La opción numInitialChunks no tiene efecto si se han definido zonas y rangos de zonas para la colección vacía y presplitHashedZones es false.

Consulta Predefinir zonas y rangos de zonas para una colección vacía o inexistente para ver un ejemplo.

Si se especifica unique: true:

  • Si la colección está vacía, sh.shardCollection() crea el índice único en la clave de partición si dicho índice no existe ya.

  • Si la colección no está vacía, debe crear el índice antes de usar sh.shardCollection().

Aunque se puede tener un índice compuesto único donde la clave de fragmentación es un prefijo, si se utiliza el parámetro unique, la colección debe tener un índice único que esté en la clave de partición.

Ver también Colección particionada e índices únicos

Cambiado en la versión 3.4.

Si la colección tiene una intercalación por defecto, el comando sh.shardCollection() debe incluir un parámetro collation con el valor { locale: "simple" }. Para colecciones no vacías con una intercalación por defecto, debe tener al menos un índice con la intercalación simple cuyos campos admitan el patrón de clave de partición.

No es necesario especificar la opción collation para colecciones sin una intercalación. Si se especifica la opción de intercalación para una colección sin intercalación, no tendrá ningún efecto.

mongos utiliza "majority" para el nivel de confirmación de escritura (write concern) del comando shardCollection y su asistente sh.shardCollection().

Dada una colección llamada people en una base de datos llamada records, el siguiente comando crea particiones en la colección por el campo zipcode:

sh.shardCollection("records.people", { zipcode: 1 } )

La base de datos phonebook tiene una colección contacts sin una intercalación predeterminada. El siguiente ejemplo utiliza sh.shardCollection() para crear una partición para el phonebook.contacts con:

sh.shardCollection(
"phonebook.contacts",
{ last_name: "hashed" },
false,
{
numInitialChunks: 5,
collation: { locale: "simple" }
}
)

Volver

sh.setBalancerState

En esta página