Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Índices de clave de partición

Las colecciones fragmentadas requieren un índice que admita la clave de partición. El índice puede ser un índice en la clave de partición o un índice compuesto donde la clave de partición es un prefijo del índice.

No se puede descartar ni ocultar un índice si es el único índice no oculto que admite la clave de fragmentación.

A partir de MongoDB 7.0.3, 6.0.12, y 5.0.22, puede descartar el índice de una clave de fragmentación encriptada. Para obtener más información, consulte Descartar un índice de clave de fragmentación encriptada.

MongoDB puede aplicar una restricción de unicidad en un índice de clave de partición clasificado por rango. El uso de un índice único en la clave de partición aplica la unicidad en toda la combinación de la clave y no en los componentes individuales de la clave de partición.

Para una colección particionada clasificada por rango, solo los siguientes índices pueden ser únicos:

  • El índice en la clave de fragmentación

  • Un índice compuesto donde la clave de partición es un prefijo

  • El índice _id por defecto; sin embargo, el índice _id solo aplica la restricción de unicidad por fragmento si el campo _id no es la clave de fragmentación.

Importante

Los clústeres particionados no aplican la restricción de unicidad en los campos _id en todo el clúster cuando el campo _id no es la clave de partición.

Si el campo _id no es la clave de partición, la restricción de unicidad solo se aplica a la partición que almacena el documento. Esto significa que dos o más documentos pueden tener el mismo valor _id, siempre que se encuentren en particiones diferentes.

Por ejemplo, una colección particionada con la clave de partición {x: 1} que se extiende por dos particiones A y B. Dado que la clave _id no es la clave de partición, la colección podría tener un documento con el valor _id 1 en la partición A y otro documento con el valor _id 1 en el partición B.

En los casos en que el campo _id no sea la clave de partición, MongoDB espera que las aplicaciones garanticen la unicidad de los valores de _id entre las particiones, por ejemplo, utilizando un identificador único para completar el campo _id.

Las restricciones de índices únicos implican que:

  • Para una colección particionada, no puede fragmentarse la colección si tiene varios índices únicos, a menos que la clave de partición sea el prefijo de todos los índices únicos.

  • Para una colección ya particionada, no puedes crear índices únicos en otros campos a menos que la clave de partición se incluya como prefijo.

  • Un índice único almacena un valor nulo para un documento al que le falta el campo indexado; es decir, un campo de índice que falta se trata como otra instancia de un valor de clave de índice null. Para más información, consultar Campo de documento faltante en un índice único de un solo campo.

Para aplicar la unicidad en los valores de la clave de fragmentación, pasar el parámetro unique como true al método sh.shardCollection():

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

  • Si la colección no está vacía, primero se 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.

No puedes especificar una restricción única en un índice encriptado.

Para mantener la singularidad en un campo que no es la clave de partición, se debe consultar Restricciones de singularidad en campos arbitrarios.

Volver

Claves de partición

En esta página