📖 Scenario: You are managing a small online bookstore database. To improve search speed for books by their title, you want to create an index on the title field.
🎯 Goal: Create a MongoDB collection called books with sample book documents. Then create a single field index on the title field to speed up queries searching by book title.
📋 What You'll Learn
Create a books collection with 3 book documents having fields title, author, and year.
Create a variable called indexField and set it to the string "title".
Create a single field index on the title field using the indexField variable.
Verify the index creation by listing all indexes on the books collection.
💡 Why This Matters
🌍 Real World
Indexes in MongoDB help speed up searches on large collections, just like an index in a book helps you find pages quickly.
💼 Career
Database administrators and backend developers often create indexes to optimize query performance and improve application speed.
Progress0 / 4 steps
1
Create the books collection with sample data
Create a MongoDB collection called books and insert these exact documents: { title: "The Hobbit", author: "J.R.R. Tolkien", year: 1937 }, { title: "1984", author: "George Orwell", year: 1949 }, and { title: "To Kill a Mockingbird", author: "Harper Lee", year: 1960 }.
MongoDB
Hint
Use db.books.insertMany([...]) with the exact documents listed.
2
Create a variable for the index field
Create a variable called indexField and set it to the string "title".
MongoDB
Hint
Use const indexField = "title" to create the variable.
3
Create a single field index on the title field
Use the indexField variable to create a single field ascending index on the books collection.
MongoDB
Hint
Use db.books.createIndex({ [indexField]: 1 }) to create the ascending index.
4
List all indexes on the books collection
List all indexes on the books collection to verify the index on the title field was created.
MongoDB
Hint
Use db.books.getIndexes() to list all indexes.
Practice
(1/5)
1. What is the main purpose of creating a single field index in MongoDB?
easy
A. To backup the database automatically
B. To speed up queries that filter or sort by one specific field
C. To store multiple fields in a single document
D. To create relationships between collections
Solution
Step 1: Understand what single field index does
A single field index helps MongoDB find documents faster when searching or sorting by that one field.
Step 2: Compare options with this purpose
Only To speed up queries that filter or sort by one specific field describes speeding up queries on one field, which matches the purpose of a single field index.
Final Answer:
To speed up queries that filter or sort by one specific field -> Option B
Quick Check:
Single field index = speed up queries on one field [OK]
Hint: Indexes speed up queries on the indexed field [OK]
Common Mistakes:
Thinking indexes store multiple fields
Confusing indexes with backups
Believing indexes create relationships
2. Which of the following is the correct syntax to create a single field ascending index on the field age in MongoDB?
easy
A. db.collection.createIndex({ 'age' => 1 })
B. db.collection.createIndex(age: 1)
C. db.collection.createIndex({ age: 1 })
D. db.collection.createIndex({ age: 'asc' })
Solution
Step 1: Recall correct syntax for createIndex
The correct syntax uses an object with the field name as key and 1 for ascending order: createIndex({ field: 1 }).
Step 2: Check each option
db.collection.createIndex({ age: 1 }) matches the correct syntax exactly. The other options use invalid syntax or wrong symbols.
Final Answer:
db.collection.createIndex({ age: 1 }) -> Option C
Quick Check:
Correct syntax = createIndex({ field: 1 }) [OK]
Hint: Use curly braces and 1 for ascending index [OK]
Common Mistakes:
Missing curly braces around the field
Using wrong symbols like =>
Using string 'asc' instead of 1
3. Given the following commands run on a MongoDB collection:
What is the effect of the index on the find query?
medium
A. The query will use the index to find documents faster
B. The query will cause an error due to index usage
C. The query will ignore the index and scan all documents
D. The query will run slower because of the index
Solution
Step 1: Understand index effect on find queries
Creating an index on 'username' helps MongoDB quickly locate documents matching that field.
Step 2: Analyze the find query
The find query filters by username 'alice', so it will use the index to speed up the search.
Final Answer:
The query will use the index to find documents faster -> Option A
Quick Check:
Index on field = faster find queries on that field [OK]
Hint: Find queries on indexed field run faster [OK]
Common Mistakes:
Assuming indexes slow down queries
Thinking queries ignore indexes
Believing index causes errors
4. You tried to create a single field index on email using this command:
db.users.createIndex(email: 1)
What is the problem with this command?
medium
A. Indexes cannot be created on the email field
B. Using 1 instead of 'asc' for ascending order
C. The field name should be a string in quotes
D. Missing curly braces around the field and order
Solution
Step 1: Check syntax for createIndex
The argument to createIndex must be an object with curly braces: { field: 1 }.
Step 2: Identify error in given command
The command lacks curly braces around email: 1, so it is invalid syntax.
Final Answer:
Missing curly braces around the field and order -> Option D
Quick Check:
createIndex needs { field: 1 } syntax [OK]
Hint: Always use curly braces for index fields [OK]
Common Mistakes:
Omitting curly braces
Using strings instead of numbers for order
Thinking any field cannot be indexed
5. You want to speed up queries that sort users by their score field in descending order. Which command correctly creates a single field index to optimize this?
hard
A. db.users.createIndex({ score: -1 })
B. db.users.createIndex({ score: 1 })
C. db.users.createIndex({ score: 'desc' })
D. db.users.createIndex({ score: 0 })
Solution
Step 1: Understand index order for sorting
To optimize descending sort, the index must be created with -1 for descending order.
Step 2: Evaluate each option
db.users.createIndex({ score: -1 }) uses { score: -1 } which is correct. The option with { score: 1 } is ascending order, the option with { score: 'desc' } uses invalid string, the option with { score: 0 } uses 0 which is invalid.
Final Answer:
db.users.createIndex({ score: -1 }) -> Option A
Quick Check:
Descending index = { field: -1 } [OK]
Hint: Use -1 for descending index order [OK]
Common Mistakes:
Using 1 for descending sort
Using strings like 'desc' instead of numbers
Using 0 which is invalid
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.