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
Understanding Tables vs Collections Thinking in MongoDB
📖 Scenario: You are helping a small bookstore organize its data. The bookstore wants to store information about books and their authors. You will practice thinking in terms of tables (like in SQL) and collections (in MongoDB) to understand how data is structured differently.
🎯 Goal: Build a MongoDB collection that stores books with embedded author information, practicing the collection thinking approach instead of separate tables.
📋 What You'll Learn
Create a collection named books with documents for three books.
Each book document must include title, year, and an embedded author document.
The author document must have name and birthYear fields.
Create a variable minYear to filter books published after this year.
Write a MongoDB query to find all books published after minYear.
Add a projection to show only the title and author.name fields in the query result.
💡 Why This Matters
🌍 Real World
Many modern applications use MongoDB to store data as collections of documents. Understanding how to structure data and query it is essential for building flexible and scalable apps.
💼 Career
Database developers and backend engineers often work with MongoDB. Knowing how to think in collections and write queries helps you design efficient data models and retrieve data quickly.
Progress0 / 4 steps
1
Create the books collection with three book documents
Create a variable called books and assign it a list of three documents. Each document must have these exact fields and values: 1. { title: "The Great Gatsby", year: 1925, author: { name: "F. Scott Fitzgerald", birthYear: 1896 } } 2. { title: "1984", year: 1949, author: { name: "George Orwell", birthYear: 1903 } } 3. { title: "To Kill a Mockingbird", year: 1960, author: { name: "Harper Lee", birthYear: 1926 } }
MongoDB
Hint
Use a list of dictionaries. Each dictionary represents a book document with nested author info.
2
Create a variable minYear to filter books published after this year
Create a variable called minYear and set it to 1930.
MongoDB
Hint
Just assign the number 1930 to the variable minYear.
3
Write a MongoDB query to find books published after minYear
Create a variable called query and assign it a MongoDB query document that finds books where the year field is greater than minYear. Use the MongoDB query operator $gt.
MongoDB
Hint
Use { "year": { "$gt": minYear } } to find books published after minYear.
4
Add a projection to show only title and author.name fields
Create a variable called projection and assign it a MongoDB projection document that includes only the title and author.name fields. Use 1 to include fields and 0 to exclude others.
MongoDB
Hint
Use { "title": 1, "author.name": 1, "_id": 0 } to include only these fields and exclude the _id field.
Practice
(1/5)
1. Which of the following best describes a MongoDB collection compared to a SQL table?
easy
A. A collection cannot store nested data.
B. A collection stores flexible documents without fixed columns.
C. A collection is organized strictly in rows and columns.
D. A collection requires fixed columns and strict schema.
Solution
Step 1: Understand MongoDB collections
MongoDB collections store documents that can have different fields and structures.
Step 2: Compare with SQL tables
SQL tables require fixed columns and rows, unlike collections.
Final Answer:
A collection stores flexible documents without fixed columns. -> Option B
Quick Check:
Collections = flexible documents [OK]
Hint: Collections are flexible; tables have fixed columns [OK]
Common Mistakes:
Thinking collections require fixed columns
Assuming collections store data in rows and columns
Believing collections cannot have nested data
2. Which of the following is the correct way to create a collection named users in MongoDB?
easy
A. CREATE TABLE users;
B. CREATE COLLECTION users;
C. db.createCollection('users');
D. db.users.create();
Solution
Step 1: Recall MongoDB syntax for creating collections
MongoDB uses db.createCollection('name') to create collections.
Step 2: Check other options
Options A, B, and D use invalid MongoDB syntax.
Final Answer:
db.createCollection('users'); -> Option C
Quick Check:
Use db.createCollection('name') to create collections [OK]
Hint: Use db.createCollection('name') in MongoDB [OK]
Common Mistakes:
Using SQL CREATE TABLE syntax in MongoDB
Trying to call create() on collection object
Using CREATE COLLECTION which is invalid
3. Given a MongoDB collection products with documents like { name: 'Pen', price: 1.5 } and { name: 'Notebook', price: 3 }, what will db.products.find({ price: { $gt: 2 } }) return?
medium
A. All products with price greater than 2
B. All products with price less than 2
C. All products with price equal to 2
D. Syntax error
Solution
Step 1: Understand the query filter
The filter { price: { $gt: 2 } } selects documents where price is greater than 2.
Step 2: Apply filter to example data
Only the document with price 3 matches; price 1.5 does not.
Final Answer:
All products with price greater than 2 -> Option A
Quick Check:
$gt means greater than [OK]
Hint: Remember $gt means greater than in MongoDB queries [OK]
Common Mistakes:
Confusing $gt with $lt
Thinking it returns products with price less than 2
Assuming syntax error due to $gt usage
4. You tried to insert a document into a MongoDB collection with db.orders.insert({id: 1, item: 'Book'}) but got a deprecation warning. What is the likely cause?
medium
A. The insert method is deprecated; use insertOne or insertMany instead.
B. MongoDB requires documents to have a field named _id, not id.
C. The collection name must be plural, so 'orders' is invalid.
D. Documents cannot have string values in MongoDB.
Solution
Step 1: Check MongoDB insert method usage
The insert() method is deprecated in modern MongoDB versions.
Step 2: Use correct insertion methods
Use insertOne() or insertMany() to insert documents.
Final Answer:
The insert method is deprecated; use insertOne or insertMany instead. -> Option A
Quick Check:
Use insertOne/insertMany, not insert() [OK]
Hint: Use insertOne or insertMany, not insert() [OK]
Common Mistakes:
Thinking _id field is mandatory to insert
Believing collection names must be plural
Assuming string values are invalid in documents
5. You want to store user profiles where each user can have different sets of contact methods (email, phone, social media). Which is the best approach in MongoDB?
hard
A. Create separate tables for each contact method and join them.
B. Store all contact methods as a single string field.
C. Use a fixed schema collection with all possible contact fields, leaving some empty.
D. Use a single collection with flexible documents holding different contact fields.
Solution
Step 1: Consider MongoDB's flexible schema
MongoDB collections allow documents to have different fields, perfect for varying contact methods.
Step 2: Compare with relational approach
Relational tables require joins and fixed schemas, less flexible for this use case.
Final Answer:
Use a single collection with flexible documents holding different contact fields. -> Option D
Quick Check:
Flexible documents fit varying user data best [OK]
Hint: Flexible documents handle varied user data best [OK]