📖 Scenario: You are managing a small online store database using MongoDB. You want to ensure that each product has a unique product code so that no two products can have the same code. This helps avoid confusion when customers order products.
🎯 Goal: Create a MongoDB collection called products with some initial product documents. Then, add a unique index on the product_code field to prevent duplicate product codes. Finally, insert a new product and observe how the unique index enforces uniqueness.
📋 What You'll Learn
Create a products collection with three product documents having product_code and name fields.
Create a unique index on the product_code field in the products collection.
Try to insert a new product with a product_code that already exists and observe the error.
Insert a new product with a unique product_code successfully.
💡 Why This Matters
🌍 Real World
Unique indexes are used in real databases to ensure data integrity, such as preventing duplicate user emails or product codes.
💼 Career
Database administrators and backend developers often create unique indexes to enforce business rules and avoid data duplication.
Progress0 / 4 steps
1
Create the products collection with initial data
Create a MongoDB collection called products and insert these three documents exactly: { product_code: "P001", name: "Notebook" }, { product_code: "P002", name: "Pen" }, and { product_code: "P003", name: "Eraser" }.
MongoDB
Hint
Use db.products.insertMany() with an array of product documents.
2
Create a unique index on product_code
Create a unique index on the product_code field in the products collection using db.products.createIndex() with the option { unique: true }.
MongoDB
Hint
Use db.products.createIndex({ product_code: 1 }, { unique: true }) to create the unique index.
3
Try inserting a product with a duplicate product_code
Try to insert a new product document { product_code: "P002", name: "Marker" } into the products collection. This should fail because product_code "P002" already exists and the unique index prevents duplicates.
MongoDB
Hint
Use db.products.insertOne({ product_code: "P002", name: "Marker" }) to try inserting the duplicate.
4
Insert a product with a unique product_code
Insert a new product document { product_code: "P004", name: "Ruler" } into the products collection. This should succeed because product_code "P004" is unique.
MongoDB
Hint
Use db.products.insertOne({ product_code: "P004", name: "Ruler" }) to insert the unique product.
Practice
(1/5)
1. What is the main purpose of a unique index in MongoDB?
easy
A. To ensure no two documents have the same value for the indexed field
B. To speed up queries without any restrictions on data
C. To allow duplicate values but sort them quickly
D. To store data in a compressed format
Solution
Step 1: Understand unique index function
A unique index prevents duplicate values in the indexed field across documents.
Step 2: Compare options
Only To ensure no two documents have the same value for the indexed field describes this behavior correctly; others describe unrelated features.
Final Answer:
To ensure no two documents have the same value for the indexed field -> Option A
Quick Check:
Unique index = no duplicates [OK]
Hint: Unique index means no duplicate values allowed [OK]
Common Mistakes:
Thinking unique index speeds queries without restrictions
Confusing unique index with data compression
Believing unique index allows duplicates
2. Which of the following is the correct way to create a unique index on the field email in MongoDB?
easy
A. db.collection.createUniqueIndex({ email: 1 })
B. db.collection.createIndex({ email: 1 }, { duplicate: false })
C. db.collection.createIndex({ email: 1 }, { unique: true })
D. db.collection.ensureIndex({ email: 1 }, { unique: false })
Solution
Step 1: Recall MongoDB syntax for unique index
The correct syntax uses createIndex with { unique: true } option.
Step 2: Evaluate options
db.collection.createIndex({ email: 1 }, { unique: true }) matches the correct syntax. db.collection.createIndex({ email: 1 }, { duplicate: false }) uses invalid option duplicate. db.collection.createUniqueIndex({ email: 1 }) uses a non-existent method. db.collection.ensureIndex({ email: 1 }, { unique: false }) sets unique to false, which is incorrect.
Hint: Use createIndex with { unique: true } to enforce uniqueness [OK]
Common Mistakes:
Using wrong option name like 'duplicate'
Using non-existent methods like createUniqueIndex
Setting unique to false by mistake
3. Given a collection with a unique index on username, what happens if you run this insert twice?
db.users.insertOne({ username: "alice" })
medium
A. Both inserts succeed, creating two identical documents
B. The second insert will fail with a duplicate key error
C. The second insert overwrites the first document
D. MongoDB ignores the unique index and inserts both
Solution
Step 1: Understand unique index effect on inserts
A unique index on username prevents duplicate values in that field.
Step 2: Predict behavior on duplicate insert
The first insert succeeds. The second insert with the same username causes a duplicate key error and fails.
Final Answer:
The second insert will fail with a duplicate key error -> Option B
Quick Check:
Duplicate insert with unique index = error [OK]
Hint: Duplicate insert on unique field causes error [OK]
Common Mistakes:
Assuming duplicates are allowed
Thinking second insert overwrites first
Believing MongoDB ignores unique index
4. You created a unique index on email but still see duplicate emails in your collection. What is the most likely cause?
medium
A. The unique index was created after duplicates already existed
B. The unique index was created with the wrong field name
C. MongoDB does not enforce uniqueness on indexes
D. The collection is empty
Solution
Step 1: Understand unique index creation behavior
If duplicates exist before creating a unique index, MongoDB will fail to create it unless duplicates are removed or ignored.
Step 2: Analyze why duplicates remain
If the index was forced or created without validation, duplicates remain. The unique index was created after duplicates already existed explains this scenario. The unique index was created with the wrong field name would cause index creation failure. MongoDB does not enforce uniqueness on indexes is false. The collection is empty is irrelevant.
Final Answer:
The unique index was created after duplicates already existed -> Option A
Quick Check:
Existing duplicates block unique index enforcement [OK]
Hint: Create unique index before duplicates exist [OK]
Common Mistakes:
Assuming MongoDB ignores duplicates silently
Not checking field name correctness
Thinking empty collection causes duplicates
5. You want to ensure uniqueness on user.email in documents where user.active is true only. How can you create a unique index for this condition?
hard
A. Create a compound unique index on user.email and user.active without filter
B. Create a unique index on user.email without any filter
C. Create a unique index on user.active only
D. Create a partial unique index with filter { 'user.active': true } on field user.email
Solution
Step 1: Understand partial unique index
A partial unique index applies uniqueness only to documents matching a filter condition.
Step 2: Apply partial index to user.email where user.active is true
Create a partial unique index with filter { 'user.active': true } on field user.email correctly creates a partial unique index on user.email with filter { 'user.active': true }. Create a unique index on user.email without any filter enforces uniqueness on all documents. Create a compound unique index on user.email and user.active without filter enforces uniqueness on combined fields but not conditional. Create a unique index on user.active only is unrelated.
Final Answer:
Create a partial unique index with filter { 'user.active': true } on field user.email -> Option D
Quick Check:
Partial unique index = conditional uniqueness [OK]
Hint: Use partial unique index with filter for conditional uniqueness [OK]
Common Mistakes:
Creating unique index without filter for conditional uniqueness
Using compound index without filter
Indexing wrong field only
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.