Convert an Existing Index to a Unique Index
On this page
This version of the documentation is archived and no longer supported. View the current documentation to learn how to upgrade your version of MongoDB server.
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