https://github.com/prosany/jh-task
ShortTask
https://github.com/prosany/jh-task
aggregation express mongodb
Last synced: about 1 month ago
JSON representation
ShortTask
- Host: GitHub
- URL: https://github.com/prosany/jh-task
- Owner: prosany
- Created: 2023-07-30T21:12:41.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-07-30T22:08:10.000Z (over 1 year ago)
- Last Synced: 2025-01-19T07:12:44.786Z (3 months ago)
- Topics: aggregation, express, mongodb
- Language: JavaScript
- Homepage: https://jk-task-final-round.onrender.com
- Size: 17.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Aggregation Task
## Explanation
```
orders
.aggregate([
{ $unwind: "$product" },
// প্রোডাক্ট নামে আমার যেই Array আছে সেইটা থেকে Unwind করেছি প্রতিটা প্রোডাক্ট থেকে একটা করে ডকুমেন্ট তৈরি করার জন্যে ।
{
$group: {
_id: {
user: "$user",
product: "$product",
},
// ইউজার এবং প্রোডাক্ট টাকে একটা object হিসেবে রাখলাম _id এর মধ্যে ।
totalOrders: { $sum: 1 },
// টোটাল Order এর সংখ্যা যোগ করলাম
},
},
{ $match: { totalOrders: { $gt: 10 } } },
// যেই গুলীর Order ১০ এর থেকে বেশী সেইগুলি শুধু রাখলাম
{
$addFields: {
product: { $toObjectId: "$_id.product" },
},
},
// একটা product নামে field অ্যাড করলাম নাহলে product এর তথ্য আনতে সমস্যা হচ্ছিলো
{
$lookup: {
from: "users",
localField: "_id.user",
foreignField: "_id",
as: "user",
},
},
{
$lookup: {
from: "products",
localField: "product",
foreignField: "_id",
as: "product",
},
},
// lookup ব্যাবহার করে collection থেকে ইউজার এবং প্রোডাক্টের তথ্য নিয়ে আসলাম
{ $unwind: "$user" },
{ $unwind: "$product" },
// আবার প্রতিটা প্রোডাক্ট থেকে একটা করে ডকুমেন্ট তৈরি করলাম
{
$project: {
_id: 0,
"user.name": 1,
"user.email": 1,
"product.name": 1,
totalOrders: 1,
"product.price": 1,
},
},
// সবার শেষে আমি কি কি দেখাতে চাই টা সেন্ড করলাম $project দিয়ে ।
]).toArray();```
## Routes
- Get Using Aggregation
```
https://jk-task-final-round.onrender.com/orders-using-aggregation
```- Get Using Find (Bangla Style)
```
https://jk-task-final-round.onrender.com/orders-using-find
```- Get All The Collections
```
https://jk-task-final-round.onrender.com/database
```