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.
Docs Menu

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 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 aprender a mantener la singularidad en un campo que no forma parte de la clave de partición, consulte Unique Constraints on Arbitrary Fields.

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

El siguiente ejemplo crea un índice único en el campo email de la colección accounts.names, que está particionada 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

Conecte mongosh a una instancia mongos y cree el índice único. 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