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
Why Document Databases Over Relational Databases
📖 Scenario: You are working for a small online bookstore. The store wants to keep track of books, authors, and customer reviews. You need to decide how to store this data efficiently.
🎯 Goal: Build a simple document database structure using MongoDB that shows why document databases can be better than relational databases for this use case.
📋 What You'll Learn
Create a collection called books with embedded author and reviews data
Add a configuration variable maxReviews to limit the number of reviews stored
Write a query to find books with more than maxReviews reviews
Add a final index on the title field to speed up searches
💡 Why This Matters
🌍 Real World
Document databases like MongoDB are great for storing complex data with nested structures, such as books with authors and reviews all in one place. This reduces the need for complex joins and makes data retrieval faster and simpler.
💼 Career
Many modern applications use document databases for flexible and scalable data storage. Knowing how to design and query these databases is valuable for backend developers, data engineers, and database administrators.
Progress0 / 4 steps
1
DATA SETUP: Create the books collection with embedded documents
Create a MongoDB collection called books with these exact documents: one book titled 'Learn MongoDB' by author { name: 'Alice', age: 30 } and two reviews { user: 'Bob', rating: 5 } and { user: 'Carol', rating: 4 } embedded inside the book document.
MongoDB
Hint
Use insertOne to add a document with embedded author and reviews arrays.
2
CONFIGURATION: Add a variable to limit reviews
Create a variable called maxReviews and set it to 1 to limit how many reviews you want to consider for filtering.
MongoDB
Hint
Use const maxReviews = 1 to create the variable.
3
CORE LOGIC: Query books with more than maxReviews reviews
Write a MongoDB query using find to get all books where the number of reviews is greater than maxReviews. Use $expr and $gt operators with $size on the reviews array.
MongoDB
Hint
Use db.books.find({ $expr: { $gt: [ { $size: '$reviews' }, maxReviews ] } }) to filter.
4
COMPLETION: Add an index on the title field
Create an index on the title field in the books collection using createIndex to speed up searches by title.
MongoDB
Hint
Use db.books.createIndex({ title: 1 }) to create the index.
Practice
(1/5)
1. Why might someone choose a document database like MongoDB over a traditional relational database?
easy
A. Because document databases store data in flexible JSON-like documents that can change structure easily.
B. Because document databases require fixed schemas and strict table relations.
C. Because document databases only work with numeric data.
D. Because document databases do not support indexing.
Solution
Step 1: Understand data storage formats
Document databases store data as JSON-like documents, allowing flexible and dynamic structures.
Step 2: Compare with relational databases
Relational databases require fixed schemas and tables, making changes harder.
Final Answer:
Because document databases store data in flexible JSON-like documents that can change structure easily. -> Option A
Quick Check:
Flexible JSON-like storage [OK]
Hint: Flexible JSON documents mean easier schema changes [OK]
Common Mistakes:
Thinking document DBs require fixed schemas
Believing document DBs only handle numbers
Assuming no indexing in document DBs
2. Which of the following is the correct way to insert a document into a MongoDB collection named users?
easy
A. insert document into users {name: 'Alice', age: 30}
B. INSERT INTO users VALUES ('Alice', 30)
C. db.users.insertOne({name: 'Alice', age: 30})
D. db.users.add({name: 'Alice', age: 30})
Solution
Step 1: Recall MongoDB insert syntax
MongoDB uses insertOne() to add a single document to a collection.
Step 2: Check options for correct syntax
db.users.insertOne({name: 'Alice', age: 30}) uses db.users.insertOne({name: 'Alice', age: 30}), which is correct MongoDB syntax.
Final Answer:
db.users.insertOne({name: 'Alice', age: 30}) -> Option C
Quick Check:
MongoDB insertOne() [OK]
Hint: MongoDB uses insertOne() for single document inserts [OK]
Common Mistakes:
Using SQL syntax in MongoDB
Using non-existent methods like add()
Writing commands as plain English
3. Given the following MongoDB document stored in the products collection:
MongoDB uses special operators like $gt for 'greater than' inside query objects.
Step 2: Correct the query syntax
The correct query is {age: {$gt: 25}}, not using > directly.
Final Answer:
The operator > should be inside $gt like {age: {$gt: 25}}. -> Option D
Quick Check:
Use $gt for greater than in MongoDB queries [OK]
Hint: Use $gt, $lt for comparisons, not > or < directly [OK]
Common Mistakes:
Using > directly in query object
Mixing SQL syntax with MongoDB
Assuming >= fixes the error
5. You have a blog application storing posts and comments. Why is a document database better than a relational one for storing posts with many comments?
hard
A. Because relational databases cannot store comments at all.
B. Because you can store each post and its comments together in one document, making reads faster.
C. Because document databases require all comments to be in separate collections.
D. Because relational databases do not support indexing on comments.
Solution
Step 1: Understand data embedding in document databases
Document databases allow embedding related data (like comments) inside a single document (post).
Step 2: Compare with relational approach
Relational databases store posts and comments in separate tables, requiring joins to combine them.
Step 3: Benefits of embedding
Embedding comments inside posts reduces the need for joins and speeds up reading a post with its comments.
Final Answer:
Because you can store each post and its comments together in one document, making reads faster. -> Option B
Quick Check:
Embedding related data = faster reads [OK]
Hint: Embed related data in one document for faster access [OK]