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.
Acerca de esta tarea
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.
Antes de comenzar
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.
Pasos
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.
Verificar la clave de partición
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()