Para convertir un índice no único en un índice único, utiliza el comando collMod. El comando collMod proporciona opciones para verificar que su campo indexado contenga valores únicos antes de completar la conversión.
Antes de comenzar
1
Pasos
1
Preparar el índice para que se convierta en un índice único
Ejecuta collMod en el índice de campo type y establece prepareUnique en true:
db.runCommand( { collMod: "apples", index: { keyPattern: { type: 1 }, prepareUnique: true } } )
Después de establecer prepareUnique, no puedes insertar nuevos documentos que dupliquen una entrada de clave de índice. Por ejemplo, la siguiente operación de inserción da como resultado un error:
db.apples.insertOne( { type: "Delicious", quantity: 20 } )
MongoServerError: E11000 duplicate key error collection: test.apples index: type_1 dup key: { type: "Delicious" }
2
Verifique las infracciones de claves únicas
Para ver si hay algún documento que infrinja la restricción de exclusividad en el campo type, ejecuta collMod con unique: true y dryRun: true:
db.runCommand( { collMod: "apples", index: { keyPattern: { type: 1 }, unique: true }, dryRun: true } )
MongoServerError: Cannot convert the index to unique. Please resolve conflicting documents before running collMod again. Violations: [ { ids: [ ObjectId("660489d24cabd75abebadbd0"), ObjectId("660489d24cabd75abebadbd2") ] } ]
3
4