Puedes crear un nuevo índice único en una colección que ya esté fragmentada, pero solo si el índice incluye la clave de fragmentació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. En el caso de una colección fragmentada, MongoDB aplica la unicidad solo cuando el índice es la clave de fragmentación o la incluye como prefijo.
Para una colección ya fragmentada, no se puede crear un índice único en otros campos a menos que la clave de fragmentación se incluya como prefijo. Si el índice no incluye la clave de fragmentación como prefijo, MongoDB devuelve un error al ejecutar el createIndexes .
Para aprender cómo mantener la unicidad en un campo que no forma parte de la clave de fragmentación, consulte Restricciones de unicidad en campos arbitrarios.
Antes de comenzar
Identifique la clave de fragmentación para la colección. Para ver la clave de fragmentación, ejecute el método y localice la colección en la
sh.status()salida.Confirme que ningún documento existente infrinja la restricción de unicidad del campo. Si un fragmento contiene documentos con valores duplicados, la operación de creación de índice puede tener éxito en los fragmentos sin duplicados, pero fallar en el fragmento con duplicados, lo que genera índices inconsistentes entre los fragmentos.
Pasos
El siguiente ejemplo crea un índice único en el campo email de la colección accounts.names, que se fragmenta en el campo region_id.
Verifica la clave de fragmentación.
Ejecute el método y localice sh.status() la accounts.names colección en la salida para confirmar que la clave de fragmentación region_id es:
sh.status()