You are viewing an offline version of MongoDB documentation. Some page features might be unavailable. To view the latest version of the page or use interactive features, visit the live page.
Convert an Existing Index to a Unique Index
To convert a non-unique index to a unique index, use the collMod
command. The
collMod
command provides options to verify that your indexed field
contains unique values before you complete the conversion.
Before you Begin
1
Steps
1
Prepare the index to be converted to a unique index
Run collMod
on the type
field index and set
prepareUnique
to true
:
db.runCommand( { collMod: "apples", index: { keyPattern: { type: 1 }, prepareUnique: true } } )
After prepareUnique
is set, you cannot insert new documents
that duplicate an index key entry. For example, the following
insert operation results in an error:
db.apples.insertOne( { type: "Delicious", quantity: 20 } )
MongoServerError: E11000 duplicate key error collection: test.apples index: type_1 dup key: { type: "Delicious" }
2
Check for unique key violations
To see if there are any documents that violate the unique constraint on
the type
field, run collMod
with unique: true
and 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