https://github.com/apollo-level2-web-dev/mongoose_practice-aggregation
https://github.com/apollo-level2-web-dev/mongoose_practice-aggregation
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/apollo-level2-web-dev/mongoose_practice-aggregation
- Owner: Apollo-Level2-Web-Dev
- Created: 2023-05-17T23:53:22.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-05-18T00:08:40.000Z (about 2 years ago)
- Last Synced: 2025-01-28T01:17:09.803Z (4 months ago)
- Size: 1.95 KB
- Stars: 2
- Watchers: 0
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# mongoose Practice Aggregation
## Example data:```js
[
{
"name": "John Doe",
"email": "[email protected]",
"age": 28,
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY",
"zipcode": "10001"
},
"favorites": {
"color": "blue",
"food": "pizza",
"movie": "The Shawshank Redemption"
},
"friends": [
{
"name": "Jane Smith",
"email": "[email protected]"
},
{
"name": "Mike Johnson",
"email": "[email protected]"
}
]
},
{
"name": "Alice Williams",
"email": "[email protected]",
"age": 35,
"address": {
"street": "456 Elm St",
"city": "San Francisco",
"state": "CA",
"zipcode": "94101"
},
"favorites": {
"color": "green",
"food": "sushi",
"movie": "The Godfather"
},
"friends": [
{
"name": "Bob Anderson",
"email": "[email protected]"
},
{
"name": "Emily Davis",
"email": "[email protected]"
}
]
}
]
```**Task 1:** Find all users who are located in New York.
**Task 2:** Find the user(s) with the email "**[[email protected]](mailto:[email protected])**" and retrieve their favorite movie.
**Task 3:** Find all users with "pizza" as their favorite food and sort them according to age.
**Task 4**: Find all users over 30 whose favorite color is "green".
**Task 5:** Count the number of users whose favorite movie is "The Shawshank Redemption."
**Task 6:** Update the zipcode of the user with the email "**[[email protected]](mailto:[email protected])**" to "10002".
**Task 7:** Delete the user with the email "**[[email protected]](mailto:[email protected])**" from the user data.
**Task 8**: Group users by their favorite movie and retrieve the average age in each movie group.
**Task 9:** Calculate the average age of users with a favorite " pizza " food.
```js
// orders
[
{
"_id": 1,
"order_number": "ORD-001",
"customer_id": 1,
"total_amount": 100.0
},
{
"_id": 2,
"order_number": "ORD-002",
"customer_id": 2,
"total_amount": 150.0
},
{
"_id": 3,
"order_number": "ORD-003",
"customer_id": 1,
"total_amount": 200.0
}
]// customers
[
{
"_id": 1,
"name": "Alice Williams",
"email": "[email protected]"
},
{
"_id": 2,
"name": "Bob Anderson",
"email": "[email protected]"
},
{
"_id": 3,
"name": "Emily Davis",
"email": "[email protected]"
}
]
```**Task 10:** Perform a lookup aggregation to retrieve the orders data along with the customer details for each order.
## More Tasks on Aggregation
**Task 1:** Group users by their favorite color and retrieve the count of users in each color group.
**Task 2:** Find the user(s) with the highest age.
**Task 3:** Find the most common favorite food among all users.
**Task 4:** Calculate the total count of friends across all users.
**Task 5:** Find the user(s) with the longest name.
**Task 6:** Calculate each state's total number of users in the address field.
**Task 7:** Find the user(s) with the highest number of friends.
These tasks involve using various aggregation operators such as **`$group`**, **`$avg`**, **`$max`**, **`$sum`**, and **`$project`** to perform complex calculations and data transformations. You can write MongoDB aggregation queries to accomplish each task based on user data. Adjust the queries according to your specific implementation and requirements.