# MongoServerError: Index build failed: collection mydb.mycoll has duplicate keys for index 'unique_idx'

- **ID:** `mongodb/index-build-failed-due-to-duplicate-keys`
- **Domain:** mongodb
- **Category:** data_error
- **Verification:** ai_generated
- **Fix Rate:** 90%

## Root Cause

An attempt to create a unique index failed because the collection contains documents with duplicate values for the indexed field(s).

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| MongoDB 6.0 | active | — | — |
| MongoDB 7.0 | active | — | — |
| MongoDB 8.0 | active | — | — |

## Workarounds

1. **Identify duplicate documents using aggregation: db.mycoll.aggregate([ { $group: { _id: '$field', count: { $sum: 1 } } }, { $match: { count: { $gt: 1 } } } ]). Then delete or update duplicates.** (90% success)
   ```
   Identify duplicate documents using aggregation: db.mycoll.aggregate([ { $group: { _id: '$field', count: { $sum: 1 } } }, { $match: { count: { $gt: 1 } } } ]). Then delete or update duplicates.
   ```
2. **Use db.collection.createIndex() with { unique: true, partialFilterExpression: { field: { $exists: true } } } to skip documents missing the field if duplicates are only on missing values.** (85% success)
   ```
   Use db.collection.createIndex() with { unique: true, partialFilterExpression: { field: { $exists: true } } } to skip documents missing the field if duplicates are only on missing values.
   ```
3. **Create a non-unique index first, then manually deduplicate data and rebuild the unique index.** (80% success)
   ```
   Create a non-unique index first, then manually deduplicate data and rebuild the unique index.
   ```

## Dead Ends

- **** — The same duplicates still exist in the collection. (100% fail)
- **** — dropDups is removed in MongoDB 4.0+; in older versions, it deletes arbitrary duplicates. (90% fail)
- **** — Sparse indexes still enforce uniqueness on non-null values, so duplicates remain. (80% fail)
