Understanding Index Intersection Behavior in MongoDB
📖 Scenario: You are managing a small online bookstore database using MongoDB. You want to understand how MongoDB uses multiple indexes together to speed up queries when searching for books by different fields.
🎯 Goal: Build a MongoDB collection with book data, create multiple indexes, and write a query that uses index intersection to find books matching multiple conditions.
📋 What You'll Learn
Create a books collection with documents containing title, author, and year fields.
Create separate indexes on author and year fields.
Write a query to find books by a specific author published in a specific year.
Ensure the query uses index intersection by MongoDB.
💡 Why This Matters
🌍 Real World
Index intersection helps databases efficiently find data when queries filter on multiple fields, improving app speed.
💼 Career
Understanding index intersection is important for database administrators and backend developers to optimize query performance.
Progress0 / 4 steps
1
Create the books collection with sample data
Insert three documents into the books collection with these exact fields and values: { title: "The Great Gatsby", author: "F. Scott Fitzgerald", year: 1925 }, { title: "1984", author: "George Orwell", year: 1949 }, and { title: "Animal Farm", author: "George Orwell", year: 1945 }.
MongoDB
Hint
Use db.books.insertMany([...]) with the exact documents listed.
2
Create indexes on author and year
Create an index on the author field and another index on the year field in the books collection using db.books.createIndex().
MongoDB
Hint
Use db.books.createIndex({ author: 1 }) and db.books.createIndex({ year: 1 }) to create ascending indexes.
3
Write a query to find books by George Orwell published in 1945
Write a query using db.books.find() to find documents where author is "George Orwell" and year is 1945.
MongoDB
Hint
Use db.books.find({ author: "George Orwell", year: 1945 }) to filter by both fields.
4
Explain how MongoDB uses index intersection for this query
Add a comment explaining that MongoDB can use index intersection to combine the author and year indexes to efficiently find matching documents.
MongoDB
Hint
Write a comment starting with // MongoDB can use index intersection describing how indexes combine.
Practice
(1/5)
1. What does index intersection in MongoDB allow the database to do?
easy
A. Combine multiple indexes to answer a single query
B. Create a new index automatically
C. Merge two collections into one
D. Delete unused indexes to save space
Solution
Step 1: Understand the purpose of index intersection
Index intersection allows MongoDB to use more than one index together to satisfy a query efficiently.
Step 2: Differentiate from other index operations
It does not create or delete indexes, nor merge collections; it only combines existing indexes for query optimization.
Final Answer:
Combine multiple indexes to answer a single query -> Option A
Quick Check:
Index intersection = combining indexes [OK]
Hint: Index intersection means using multiple indexes together [OK]
Common Mistakes:
Thinking index intersection creates new indexes
Confusing index intersection with collection merging
Assuming it deletes indexes automatically
2. Which of the following is the correct way to check if MongoDB used index intersection for a query?
easy
A. Check the size of the indexes with db.collection.indexSize()
B. Run db.collection.stats() to see index usage
C. Use db.collection.aggregate() without any options
D. Use db.collection.find().explain() and look for indexIntersection in the plan
Solution
Step 1: Identify the method to analyze query plans
The explain() method shows how MongoDB executes a query, including index usage.
Step 2: Look for index intersection details
Within the explain output, the indexIntersection field indicates if multiple indexes were combined.
Final Answer:
Use db.collection.find().explain() and look for indexIntersection in the plan -> Option D
Quick Check:
Explain() shows index intersection [OK]
Hint: Use explain() to see index intersection in query plan [OK]
Common Mistakes:
Using stats() which shows collection info, not query plan
Running aggregate() without explain() does not show index use
Checking index size does not reveal intersection
3. Given a collection with indexes on { age: 1 } and { city: 1 }, what will MongoDB do for this query?
db.users.find({ age: 30, city: "NY" })
medium
A. Use index intersection combining both age and city indexes
B. Use only the index on city
C. Use only the index on age
D. Perform a full collection scan ignoring indexes
Solution
Step 1: Analyze the query filter fields
The query filters on both age and city, and there are separate indexes on each field.
Step 2: Understand MongoDB's index intersection behavior
MongoDB can combine these two indexes to efficiently find documents matching both conditions using index intersection.
Final Answer:
Use index intersection combining both age and city indexes -> Option A
Quick Check:
Query on two indexed fields = index intersection [OK]
Hint: Multiple single-field indexes on query fields trigger index intersection [OK]
Common Mistakes:
Assuming MongoDB uses only one index per query
Thinking MongoDB always does full scan if multiple indexes exist
Confusing index intersection with compound indexes
Which index strategy will most likely improve performance using index intersection?
hard
A. Create a compound index on { author: 1, year: 1, genre: 1 }
B. Keep single-field indexes and let MongoDB intersect them
C. Create compound indexes on pairs like { author: 1, year: 1 } and { genre: 1 }
D. Drop all indexes and create a single index on { author: 1 }
Solution
Step 1: Understand index intersection limits
MongoDB can combine multiple single-field indexes, but compound indexes on multiple fields are often more efficient.
Step 2: Evaluate index strategies
A full compound index on all three fields is best but costly to maintain; compound indexes on pairs plus a single index can help MongoDB intersect efficiently.
Step 3: Compare options
Create compound indexes on pairs like { author: 1, year: 1 } and { genre: 1 } creates compound indexes on pairs, enabling better intersection than only single-field indexes, improving query speed without full compound index overhead.
Final Answer:
Create compound indexes on pairs like { author: 1, year: 1 } and { genre: 1 } -> Option C