Para convertir un índice no único a un índice único, usa el collMod comando. El comando collMod proporciona opciones para verificar que el 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