Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Custom _id values in MongoDB
📖 Scenario: You are managing a small library database. Each book needs a unique identifier that you assign yourself instead of letting MongoDB create one automatically.
🎯 Goal: Create a MongoDB collection with books where each book has a custom _id value. Insert multiple books with your chosen _id values.
📋 What You'll Learn
Create a collection named books
Insert documents with a custom _id field
Each document must have _id, title, and author fields
Use string values for the custom _id fields
💡 Why This Matters
🌍 Real World
Custom _id values are useful when you want to control the unique identifiers in your database, such as using ISBNs for books or employee IDs.
💼 Career
Many jobs require managing databases where custom IDs help integrate with other systems or maintain meaningful keys.
Progress0 / 4 steps
1
Create the books collection with one book
Create a collection called books and insert one document with _id set to "book1", title set to "The Great Gatsby", and author set to "F. Scott Fitzgerald".
MongoDB
Hint
Use db.books.insertOne() with a document that includes _id, title, and author.
2
Add a variable for the second book's _id
Create a variable called secondBookId and set it to the string "book2".
MongoDB
Hint
Use const secondBookId = "book2" to store the custom ID for the next book.
3
Insert the second book using the secondBookId variable
Insert a new document into the books collection with _id set to the variable secondBookId, title set to "1984", and author set to "George Orwell".
MongoDB
Hint
Use db.books.insertOne() with _id: secondBookId and the other fields.
4
Insert a third book with a custom _id directly
Insert a third document into the books collection with _id set to "book3", title set to "To Kill a Mockingbird", and author set to "Harper Lee".
MongoDB
Hint
Use db.books.insertOne() with the specified fields and _id value.
Practice
(1/5)
1.
What is the purpose of the _id field in a MongoDB document?
easy
A. It uniquely identifies each document in a collection.
B. It stores the creation date of the document.
C. It holds the user's login information.
D. It contains the document's size in bytes.
Solution
Step 1: Understand the role of _id in MongoDB
The _id field is a unique identifier for each document in a collection, ensuring no two documents share the same _id.
Step 2: Compare with other options
Other options describe unrelated fields or metadata, not the unique identifier role.
Final Answer:
It uniquely identifies each document in a collection. -> Option A
Quick Check:
_id = unique document ID [OK]
Hint: Remember: _id means unique ID for each document [OK]
Common Mistakes:
Thinking _id stores creation date
Confusing _id with user data fields
Assuming _id is optional
2.
Which of the following is the correct way to insert a document with a custom _id value in MongoDB?
db.users.insertOne({ _id: 123, name: "Alice" })
easy
A. db.users.insertOne({ id: 123, name: "Alice" })
B. db.users.insertOne({ _id: 123, name: "Alice" })
C. db.users.insertOne({ _id: "name", name: "Alice" })
D. db.users.insertOne({ _id: ObjectId(), name: "Alice" })
Solution
Step 1: Identify correct _id field usage
The _id field must be named exactly _id to set a custom ID. db.users.insertOne({ _id: 123, name: "Alice" }) uses _id: 123 correctly.
Step 2: Check other options for errors
db.users.insertOne({ id: 123, name: "Alice" }) uses id instead of _id. db.users.insertOne({ _id: "name", name: "Alice" }) uses a string "name" which is valid but less meaningful here. db.users.insertOne({ _id: ObjectId(), name: "Alice" }) uses default ObjectId, not custom.
Final Answer:
db.users.insertOne({ _id: 123, name: "Alice" }) -> Option B
Quick Check:
Custom _id needs exact field name [OK]
Hint: Use exact field name _id for custom IDs [OK]
Common Mistakes:
Using id instead of _id
Confusing ObjectId() with custom values
Using invalid types for _id
3.
Given the following documents inserted into a collection:
A. SyntaxError due to missing quotes around _id value.
B. TypeError because _id must be a string.
C. No error; both documents inserted successfully.
D. DuplicateKeyError because _id must be unique.
Solution
Step 1: Check uniqueness requirement of _id
The _id field must be unique in a collection. Both documents use _id: 101.
Step 2: Identify the error caused by duplicate _id
Inserting the second document with the same _id causes a DuplicateKeyError.
Final Answer:
DuplicateKeyError because _id must be unique. -> Option D
Quick Check:
Duplicate _id causes insertion error [OK]
Hint: No two documents can share the same _id [OK]
Common Mistakes:
Thinking _id can repeat
Confusing syntax error with duplicate key error
Assuming _id must be string only
5.
You want to store user profiles with custom _id values based on their email addresses to speed up lookups. Which approach is best?
// Option A
{ _id: ObjectId(), email: "user@example.com", name: "User" }
// Option B
{ _id: "user@example.com", name: "User" }
// Option C
{ email: "user@example.com", name: "User" }
// Option D
{ _id: UUID(), email: "user@example.com", name: "User" }
hard
A. Use default ObjectId and store email separately.
B. Do not use _id, just store email field.
C. Set _id to the email string for direct lookup.
D. Use UUID as _id and email separately.
Solution
Step 1: Understand the goal of custom _id
The goal is to speed up lookups by using email as the unique identifier.
Step 2: Evaluate options for best fit
Setting _id to the email string enables direct lookup using the email as _id, making queries fast. Using default ObjectId or UUID with separate email requires additional indexing. Omitting _id is invalid since it is mandatory.
Final Answer:
Set _id to the email string for direct lookup. -> Option C
Quick Check:
Custom _id as email speeds queries [OK]
Hint: Use email as _id for fast direct lookups [OK]