Bird
Raised Fist0
MongoDBquery~30 mins

Document model mental model (JSON/BSON) in MongoDB - Mini Project: Build & Apply

Choose your learning style10 modes available

Start learning this pattern below

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
Building a Simple MongoDB Document Model
📖 Scenario: You are creating a small database for a local bookstore. The store wants to keep track of books with details like title, author, and price.
🎯 Goal: Build a MongoDB document model using JSON/BSON format to represent books in the bookstore.
📋 What You'll Learn
Create a document representing a book with specific fields
Add a configuration field for currency
Use a query to find books cheaper than a certain price
Complete the document with an additional field for stock quantity
💡 Why This Matters
🌍 Real World
Document models like this are used in MongoDB to store and organize data for applications such as online stores, libraries, and inventory systems.
💼 Career
Understanding how to structure documents and write queries is essential for roles like database administrators, backend developers, and data engineers working with NoSQL databases.
Progress0 / 4 steps
1
Create the initial book document
Create a MongoDB document called book with these exact fields and values: title set to "The Great Gatsby", author set to "F. Scott Fitzgerald", and price set to 10.99.
MongoDB
Hint

Use curly braces to create a document and include the fields exactly as shown.

2
Add a currency field
Add a field called currency to the book document and set it to "USD".
MongoDB
Hint

Add the new field inside the existing document with a comma separating it from previous fields.

3
Query for books cheaper than a price
Write a MongoDB query called cheap_books_query that finds books with price less than 15.
MongoDB
Hint

Use MongoDB's query operator $lt to find prices less than 15.

4
Add stock quantity to the book document
Add a field called stock to the book document and set it to 30.
MongoDB
Hint

Add the stock field with a comma after the previous field inside the document.

Practice

(1/5)
1. Which of the following best describes a MongoDB document?
easy
A. A compiled program file
B. A table with rows and columns like in SQL
C. A set of key-value pairs similar to a JSON object
D. A flat file storing plain text data

Solution

  1. Step 1: Understand MongoDB document structure

    MongoDB stores data as documents, which are collections of key-value pairs similar to JSON objects.
  2. Step 2: Compare with other data formats

    Unlike tables or flat files, documents can store nested data and arrays, making them flexible and structured.
  3. Final Answer:

    A set of key-value pairs similar to a JSON object -> Option C
  4. Quick Check:

    Document = JSON-like key-value pairs [OK]
Hint: Think JSON object when you hear MongoDB document [OK]
Common Mistakes:
  • Confusing documents with SQL tables
  • Thinking documents are flat text files
  • Assuming documents are executable files
2. Which of the following is the correct way to represent a nested document in MongoDB?
easy
A. { "name": "Alice", "address": { "city": "NY", "zip": 10001 } }
B. { "name": "Alice", "address": "city: NY, zip: 10001" }
C. { "name": "Alice", "address": ["city", "NY", "zip", 10001] }
D. { "name": "Alice", "address": ("city": "NY", "zip": 10001) }

Solution

  1. Step 1: Identify correct JSON syntax for nested documents

    Nested documents are represented as objects inside another object using curly braces {} with key-value pairs.
  2. Step 2: Check each option's syntax

    { "name": "Alice", "address": { "city": "NY", "zip": 10001 } } uses proper JSON syntax with nested braces. The other options use incorrect formats like strings, arrays, or parentheses.
  3. Final Answer:

    { "name": "Alice", "address": { "city": "NY", "zip": 10001 } } -> Option A
  4. Quick Check:

    Nested document = object inside object with braces [OK]
Hint: Nested documents use curly braces inside braces [OK]
Common Mistakes:
  • Using strings instead of nested objects
  • Using arrays for nested key-value pairs
  • Using parentheses instead of braces
3. Given the document { "name": "Bob", "scores": [85, 90, 78] }, what is the value of the scores field?
medium
A. "85, 90, 78"
B. [85, 90, 78]
C. {85: true, 90: true, 78: true}
D. 85

Solution

  1. Step 1: Identify the data type of the scores field

    The scores field contains square brackets [], which represent an array in JSON/BSON.
  2. Step 2: Understand array representation

    The array holds the numbers 85, 90, and 78 as elements, so the value is the list [85, 90, 78].
  3. Final Answer:

    [85, 90, 78] -> Option B
  4. Quick Check:

    Square brackets = array = [85, 90, 78] [OK]
Hint: Square brackets mean array, not string or object [OK]
Common Mistakes:
  • Confusing array with string
  • Thinking array is a key-value object
  • Selecting only one element instead of full array
4. Identify the error in this MongoDB document: { "title": "Book", "pages": "300", "author": { "name": "John", "age": 45 }
medium
A. Missing closing brace for the document
B. Pages field should be a number, not a string
C. Title field cannot be a string
D. Author name must be an array

Solution

  1. Step 1: Check document syntax carefully

    The document starts with { but does not have a matching closing brace } at the end.
  2. Step 2: Validate other fields

    While pages is a string, MongoDB allows strings for numbers; title as string is valid; author.name as string is valid.
  3. Final Answer:

    Missing closing brace for the document -> Option A
  4. Quick Check:

    Every { must have matching } [OK]
Hint: Count opening and closing braces carefully [OK]
Common Mistakes:
  • Ignoring missing braces
  • Thinking string numbers are invalid
  • Assuming arrays are required for nested objects
5. You want to store a product with multiple colors and a supplier's contact info inside one MongoDB document. Which structure correctly models this?
hard
A. { "product": "Shirt", "colors": "red, blue", "supplier": "ABC Co, 123-456" }
B. { "product": "Shirt", "colors": ("red", "blue"), "supplier": { "name": "ABC Co", "phone": 123456 } }
C. { "product": "Shirt", "colors": { "red": true, "blue": true }, "supplier": ["ABC Co", "123-456"] }
D. { "product": "Shirt", "colors": ["red", "blue"], "supplier": { "name": "ABC Co", "phone": "123-456" } }

Solution

  1. Step 1: Understand how to store multiple values and nested info

    Multiple colors should be stored as an array, and supplier info as a nested document with key-value pairs.
  2. Step 2: Evaluate each option's structure

    { "product": "Shirt", "colors": ["red", "blue"], "supplier": { "name": "ABC Co", "phone": "123-456" } } correctly uses an array for colors and a nested document for supplier. { "product": "Shirt", "colors": "red, blue", "supplier": "ABC Co, 123-456" } uses strings instead of structured data. { "product": "Shirt", "colors": { "red": true, "blue": true }, "supplier": ["ABC Co", "123-456"] } uses an object for colors incorrectly and an array for supplier. { "product": "Shirt", "colors": ("red", "blue"), "supplier": { "name": "ABC Co", "phone": 123456 } } uses parentheses which are invalid in JSON.
  3. Final Answer:

    { "product": "Shirt", "colors": ["red", "blue"], "supplier": { "name": "ABC Co", "phone": "123-456" } } -> Option D
  4. Quick Check:

    Arrays for lists, objects for nested info [OK]
Hint: Use arrays for lists, objects for nested details [OK]
Common Mistakes:
  • Using strings instead of arrays for multiple values
  • Using invalid parentheses instead of braces
  • Confusing arrays and objects for nested data