🧩 MongoDB Practice Series – Aggregation Challenges with Solutions (Part 5)
Welcome to Part 5 of the MongoDB Practice Series.
In this lesson, you will practice Aggregation in MongoDB.
Aggregation helps you perform calculations like:
- Total
- Average
- Count
- Grouping data
These skills are very useful for reports and analytics.
🟢 Exercise 1: Count Total Documents
Problem:
Count the total number of students in the collection.
Solution:
db.students.countDocuments()
Learning Goal: Learn how to count records.
🟡 Exercise 2: Calculate Average Value
Problem:
Find the average price of all products.
Solution:
db.products.aggregate([
{
$group: {
_id: null,
averagePrice: { $avg: "$price" }
}
}
])
Learning Goal: Use $group and $avg.
🟡 Exercise 3: Calculate Total Sum
Problem:
Find the total revenue from all orders.
Solution:
db.orders.aggregate([
{
$group: {
_id: null,
totalRevenue: { $sum: "$totalAmount" }
}
}
])
Learning Goal: Use $sum to calculate totals.
🔵 Exercise 4: Group Data by Category
Problem:
Count how many products exist in each category.
Solution:
db.products.aggregate([
{
$group: {
_id: "$category",
totalProducts: { $sum: 1 }
}
}
])
Learning Goal: Understand grouping by field value.
🔵 Exercise 5: Find Maximum Value
Problem:
Find the highest product price.
Solution:
db.products.aggregate([
{
$group: {
_id: null,
highestPrice: { $max: "$price" }
}
}
])
Learning Goal: Use $max.
🔴 Exercise 6: Group and Filter Results
Problem:
Find categories that have more than 5 products.
Solution:
db.products.aggregate([
{
$group: {
_id: "$category",
count: { $sum: 1 }
}
},
{
$match: {
count: { $gt: 5 }
}
}
])
Learning Goal: Combine $group with $match.
🚀 Mini Challenge
Create a collection called sales with fields:
- productName
- category
- quantity
- price
Then write queries to:
- Calculate total revenue (quantity × price)
- Find total sales per category
- Find the category with highest total sales
Try solving step by step.
🎯 What’s Next?
In Part 6 of the MongoDB Practice Series, we will practice:
- Real-world schema design scenarios
- Embedding vs referencing decisions
- Designing scalable databases
Stay tuned for the next level!
No comments:
Post a Comment