Docs Menu
Docs Home
/ /
particionado

sh.shardCollection()

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

Fragmenta una colección usando key como Clave de fragmento. La clave de fragmento determina cómo MongoDB distribuye los documentos de la colección entre los fragmentos.

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

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 espacio de nombres de la colección que se va a fragmentar en el "<database>.<collection>" formato.

key

Documento

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

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

Establezca el valor del campo en:

La clave defragmento debe ser compatible con un índice. A menos que la colección esté vacía, el índice debe existir antes del shardCollection comando. Si la colección está vacía, MongoDB crea el índice antes de fragmentarla si el índice compatible con la clave de fragmento aún no existe.

Véase también Índices de claves de fragmentos

unique

booleano

Opcional. Especifique true para garantizar que el índice subyacente aplique una restricción única. El valor predeterminado es false.

No se puede especificar true cuando se utilizan claves de fragmentos con hash.

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

options

Documento

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

El argumento options admite las siguientes opciones:

Parameter
Tipo
Descripción

numInitialChunks

entero

Opcional. Especifica el número mínimo de fragmentos que se deben crear inicialmente al fragmentar una colección vacía con una clave de fragmento con hash. MongoDB crea y equilibra los fragmentos en el clúster. El numInitialChunks parámetro debe ser inferior a 8192 fragmentos por fragmento. El 2 valor predeterminado es fragmentos por fragmento.

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

collation

Documento

Opcional. Si la colección especificada en shardCollection tiene una intercalación predeterminada,debe incluir un documento de intercalación con;{ locale : "simple" } de lo contrario, el shardCollection comando fallará. Al menos uno de los índices cuyos campos admitan el patrón de clave de fragmento debe tener la intercalación simple.

booleano

Opcional. Especifique true para crear y distribuir fragmentos iniciales para una colección vacía o inexistente, según las zonas y los rangos de zonas definidos para la colección. Solo para fragmentación con hash.

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

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 M,0 M2 y5 M. Para obtener más información, consulte 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.

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

Si bien puede cambiar su clave de fragmento más adelante, es importante considerar cuidadosamente su elección de clave de fragmento para evitar problemas de escalabilidad y rendimiento.

Tip

Las claves de fragmento con hash utilizan un índice con hash o un índice con hash compuesto como clave de fragmento.

Utilice el formato field: "hashed" para especificar un campo de clave de fragmento con hash.

Nota

Si se están realizando migraciones de fragmentos mientras se crea una colección de claves de fragmentos con hash, la distribución inicial de fragmentos puede ser desigual hasta que el equilibrador 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 fragmenta una colección mediante una clave de fragmento con rango o hash de un solo campo, la numInitialChunks opción no tiene efecto si se han definido zonas y rangos de zonas para la colección vacía.

Para fragmentar una colección utilizando un índice hash compuesto, consulte Distribución de fragmentos iniciales con índices hash compuestos.

MongoDB admite la fragmentación de colecciones en índices con hash compuesto. Al fragmentar una colección vacía o inexistente mediante una clave de fragmento con hash compuesto, se aplican requisitos adicionales para que MongoDB pueda crear y distribuir fragmentos iniciales.

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

Consulte Zonas predefinidas 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.

Véase también Colección fragmentada e índices únicos

Cambiado en la versión 3.4.

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

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

mongos utiliza para "majority" la preocupación de escritura del comando y shardCollection su sh.shardCollection() ayudante.

Dada una colección llamada people en una base de datos llamada records, el siguiente comando fragmenta 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