Converter um Índice Existente em um Índice Único
Nesta página
Para converter um índice não índice único{ , use o comando collMod
. O comando collMod
fornece opções para verificar se seu campo indexado contém valores exclusivos antes de concluir a conversão.
Antes de começar
1
Passos
1
Prepare o índice para ser convertido em um índice único
Execute collMod
no índice do campo type
e configure prepareUnique
para true
:
db.runCommand( { collMod: "apples", index: { keyPattern: { type: 1 }, prepareUnique: true } } )
Depois que prepareUnique
for definido, você não poderá inserir novos documentos que duplicam uma entrada de chave de índice. Por exemplo, a seguinte operação de inserção resulta em um erro:
db.apples.insertOne( { type: "Delicious", quantity: 20 } )
MongoServerError: E11000 duplicate key error collection: test.apples index: type_1 dup key: { type: "Delicious" }
2
Verifique se há violações de chave única
Para ver se há algum documento que viola a restrição exclusiva no campo type
, execute collMod
com unique: true
e 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