0
0
MongoDBquery~30 mins

Why querying nested data matters in MongoDB - See It in Action

Choose your learning style9 modes available
Why querying nested data matters
📖 Scenario: You work at a company that stores customer orders in a MongoDB database. Each order document contains nested information about the customer and the items they purchased. You want to learn how to query this nested data to find specific details.
🎯 Goal: Build a MongoDB query step-by-step to find orders where a specific item was purchased and extract nested customer information.
📋 What You'll Learn
Create a collection called orders with sample nested documents
Add a filter variable to specify the item name to search for
Write a query to find orders containing that item in the nested items array
Project the customer's name and the matching item details in the query result
💡 Why This Matters
🌍 Real World
Many real-world databases store complex nested data like orders with customers and items. Being able to query inside nested arrays is essential to find relevant information quickly.
💼 Career
Database developers and analysts often need to write queries that access nested data structures to generate reports, filter data, or build APIs.
Progress0 / 4 steps
1
DATA SETUP: Create the orders collection with nested documents
Create a variable called orders and assign it an array with these two documents exactly: { _id: 1, customer: { name: "Alice", age: 30 }, items: [ { name: "Pen", qty: 3 }, { name: "Notebook", qty: 1 } ] } and { _id: 2, customer: { name: "Bob", age: 25 }, items: [ { name: "Pencil", qty: 2 }, { name: "Pen", qty: 5 } ] }
MongoDB
Need a hint?

Define orders as a list with two dictionaries. Each dictionary has _id, customer (which is another dictionary), and items (which is a list of dictionaries).

2
CONFIGURATION: Define the item name to search for
Create a variable called search_item and set it to the string "Pen".
MongoDB
Need a hint?

Just create a variable search_item and assign it the string "Pen".

3
CORE LOGIC: Write a MongoDB-style query to find orders with the search item
Create a variable called matching_orders and assign it a list comprehension that filters orders for documents where any item in items has name equal to search_item. Use for order in orders and any(item['name'] == search_item for item in order['items']) in the condition.
MongoDB
Need a hint?

Use a list comprehension with any() to check if any item in order['items'] has the name matching search_item.

4
COMPLETION: Project customer name and matching item details
Create a variable called result and assign it a list comprehension that for each order in matching_orders creates a dictionary with keys customer_name set to order['customer']['name'] and items set to a list of items from order['items'] where item['name'] == search_item.
MongoDB
Need a hint?

Use a list comprehension over matching_orders. For each order, create a dictionary with customer_name and a filtered list of items matching search_item.