Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.

Crear un índice único en una colección particionada existente

Puede crear un nuevo índice único en una colección que ya esté particionada, pero solo si el índice incluye la clave de partición como prefijo.

La restricción de unicidad en un índice garantiza que los documentos de la colección tengan un valor único para el campo indexado. Para una colección particionada, MongoDB aplica la unicidad solo cuando el índice es la clave de partición o incluye la clave de partición como un prefijo.

Para una colección ya particionada, no puedes crear un índice único en otros campos a menos que la clave de partición se incluya como prefijo. Si el índice no incluye la clave de partición como prefijo, MongoDB devuelve un error cuando ejecutas el comando createIndexes.

Para conocer las restricciones que se aplican a los índice único en colección particionada y cómo mantener la unicidad en un campo que no forma parte de la clave de partición, consulte Mantener la unicidad en clúster particionado.

  • Identifique la clave de partición para la colección. Para ver la clave de partición, ejecute el método sh.status() y localice la colección en la salida.

  • Confirme que ningún documento existente infringe la restricción de unicidad del campo. Si una partición contiene documentos con valores duplicados, la operación de creación de índice puede tener éxito en las particiones sin duplicados, pero fallar en la partición con duplicados, lo que deja índices inconsistentes en todas las particiones.

  • Conecta mongosh a una instancia mongos.

El siguiente ejemplo crea un índice compuesto único en los campos region_id y email de la colección accounts.names, que está particionado en el campo region_id.

1

Ejecute el método sh.status() y localice la colección accounts.names en la salida para confirmar que la clave de partición es region_id:

sh.status()
2

Cree el índice único e incluya la clave de partición region_id como prefijo del índice compuesto:

db.names.createIndex( { region_id: 1, email: 1 }, { unique: true })
region_id_1_email_1