Just a quick note, you can use any data for this video. I don't own this data. Half of it was taken from online and half of it was generated by ChatGPT. Data is not important here, these questions and use cases are important and these were were totally designed by me. Thanks and please share 😁 gist.github.com/hiteshchoudhary/a80d86b50a5d9c591198a23d79e1e467
Some additional tips 1) Always think TWICE when you are using operators like "$unwind' because it is very costly operator because it creates multiple copies of a same documents. Try to think some other possible solution. Some costly operators are: "$lookup", "$unwind", "$facet", etc. 2) It is a best practice to use $project after the $group stage in the pipeline because "by default, mongodb return a BSON object and not a JSON object" and BSON object have more properties than a JSON object. So using the $project, you can get the JSON object You can study this point for more knowledge. 3) If the size of your document is big, then always use ".allowDiscUse(true)" in your aggregation pipeline. 4) When dealing with larger chunks of data, use "cursor" and "batchSize" approach.
Although not always used, the .allowDiskUse(true) option causes MongoDB to create temporary files on disk and use these files to perform aggregation operations. Since disk I/O is much slower than memory I/O, In some cases, allowing disk usage may strain performance.
I don't understand what kind of content people want in the world of paid classes? These videos are totally free. is this the reason of not getting credit? Let's appreciate his explanation and please show some support i don't want him to stop making videos.
"08:30" - Create collection in Mongodb cluster and inserting data via Mongodb extension from vs code "15:14" - How to use aggregation pipeline inside Mongodb * Use $ sign with operator and field name* "18:38" - count operator with match "31:19" - sum with grouping avoid count "48:46"- Avoid using count with group bad "22:15" - grouping by _id with "$filed" "24:06"- grouping all by null "24:42" - grouping and getting avg via $avg "33:02" - filtering on 2nd stage via sort " 35:36" - summarizing questions "51:52" - Nested drilling and sorting and limiting***
I'm quite impressed with this video. I tried learning the MongoDB aggregation pipeline two years ago. I could not grasp it. With this video, I am confident to apply it to my Node.js backend projects with ease. It has also helped to learn how to use the MongoDB docs. With this, I will watch your other videos due to your easy way of teaching. More grease to your elbow.
Gratitude to Hitesh Choudhary for the insightful MongoDB aggregation pipeline tutorial! His expertise and clear explanations have been instrumental in enhancing my understanding of this powerful feature. Thank you, Hitesh, for your valuable contribution to the developer community!"
[ { $unwind: { path: "$tags", } }, { $group: { _id: "$_id", count: { $sum: 1 } } },{ $group: { _id: null, avg: { $avg: "$count" } } } ] $unwind: This operator breaks up the array field ($tags) into individual documents. If a document has 3 elements in the tags array, it will create 3 separate documents, each containing one element from the array. $group: The first $group groups these documents back together by their original _id. It counts how many documents were created for each _id, which corresponds to the number of elements in the tags array for each user. $group: The second $group aggregates these counts into a single document and calculates the average ($avg) number of tags per user.
Hi Hitesh, thank you for such an informative video about MongoDB Aggregration. I am new to MongoDB and this is very helpful. For those who want to take it step further to display only the author_name instead of the whole object 🤓 : [ { $lookup: { from: "authors", localField: "author_id", foreignField: "_id", as: "author_details" } }, { $addFields: { author_details: {$arrayElemAt: ["$author_details", 0]} } }, { $addFields: { author_name: "$author_details.name" } }, { $project: { author_name: 1, id: 1, genre: 1, author_id: 1, title: 1 } } ]
thank you very much for sharing, this is very very very very insightful, you 've just saved me a lot of time of wondering up and down to understand aggregation pipeline
You help me a lot in learning MongoDB operations besides those for CRUD. I am more confident in using aggregation pipeline to collect statistic information now. Thanks you for your work! Expecting your new video on Tailwindcss...
First, thank you for your excellent explanation, I loved the course, enjoyed it a lot, and learned from it. but I would like to add a point, you said at the beginning of the course that this tutorial is for beginners which is not necessary because, this is my first time studying MongoDB aggregation and MongoDB in general, but I do have a background in Software Enginnering. However, I find the course perfect for first learning and global all the basics needed to start working with MongoDB Aggregations, but not enough for more advanced and complex queries. so I recommend you to add a course for advanced and complex queries. we will appreciate it a lot. Thank you!!!
Thanks for your unique way of tutorials, with practical implementation and assignments. Learnt MongoDB and feeling confident in same. Also this helped me in Javascript Backend assignment. Really liked your way of teaching 😇
Great video on aggregation. Thank you Hitesh! I think we can have more scenarios like operations on array of objects (and when some fields don't exist in some documents). These are more challenging in real life.
At 49:18 , Just wanted to tell, We can count No. of males and females using this also [ { $group: { _id: '$gender', count: { $count: {} } } } ] But $count is generally used for counting no of documents in a stage.
this can be another way the question Q. number of users which have "ad" as a tag at index 2 [ { $unwind: { path: "$tags", includeArrayIndex: "arrayindex", }, }, { $match: { $and: [ { arrayindex: 1, }, { tags: "ad", }, ], }, }, { $count: 'users' } ]
Thanks so much for this tutorial.Could you take it a little further by actually writing a backend NodeJs to utilize those query results of the aggregation.I mean how to use it in the backend
in node you can use it like you might have used products.find() method or products.findByID() method, in the same way you can use product.Aggregate() and inside parenthesis write your aggregation query. If that helps ✌.
If anyone is not able to use the regex expression as shown in the video use this instead [ { $match: { phone:{ $regex: "^\\+1" } } }, { $count:"Number starting from +1" } ]
Sir, could ypu help us with a mongo db aggregation project as it is almost impossible to find a good one it will help us get to know more how this is used in production live projects
Not able to understand, what is being happening here . Kabhi kabhi bolte hai aap free course sa kuch a to z mil jayega. kabhi backend ka 6999 rs lete hai
Just a quick note, you can use any data for this video. I don't own this data. Half of it was taken from online and half of it was generated by ChatGPT. Data is not important here, these questions and use cases are important and these were were totally designed by me.
Thanks and please share 😁
gist.github.com/hiteshchoudhary/a80d86b50a5d9c591198a23d79e1e467
Some additional tips
1) Always think TWICE when you are using operators like "$unwind' because it is very costly operator because it creates multiple copies of a same documents. Try to think some other possible solution. Some costly operators are: "$lookup", "$unwind", "$facet", etc.
2) It is a best practice to use $project after the $group stage in the pipeline because "by default, mongodb return a BSON object and not a JSON object" and BSON object have more properties than a JSON object. So using the $project, you can get the JSON object You can study this point for more knowledge.
3) If the size of your document is big, then always use ".allowDiscUse(true)" in your aggregation pipeline.
4) When dealing with larger chunks of data, use "cursor" and "batchSize" approach.
Although not always used, the .allowDiskUse(true) option causes MongoDB to create temporary files on disk and use these files to perform aggregation operations. Since disk I/O is much slower than memory I/O, In some cases, allowing disk usage may strain performance.
Ya using unwind can cuases problem too so for that need to know about arrayElment like operators ,the point you are saying totally aggree with that
tx for this information i never know that and I use this operators in many queries from now on I will mind this things before using
I don't understand what kind of content people want in the world of paid classes? These videos are totally free. is this the reason of not getting credit? Let's appreciate his explanation and please show some support i don't want him to stop making videos.
"08:30" - Create collection in Mongodb cluster and inserting data via Mongodb extension from vs code
"15:14" - How to use aggregation pipeline inside Mongodb
* Use $ sign with operator and field name*
"18:38" - count operator with match "31:19" - sum with grouping avoid count "48:46"- Avoid using count with group bad
"22:15" - grouping by _id with "$filed" "24:06"- grouping all by null
"24:42" - grouping and getting avg via $avg
"33:02" - filtering on 2nd stage via sort
" 35:36" - summarizing questions
"51:52" - Nested drilling and sorting and limiting***
question is, how do we put it in code if you are using node.js for example?
I'm quite impressed with this video. I tried learning the MongoDB aggregation pipeline two years ago. I could not grasp it. With this video, I am confident to apply it to my Node.js backend projects with ease. It has also helped to learn how to use the MongoDB docs. With this, I will watch your other videos due to your easy way of teaching. More grease to your elbow.
Gratitude to Hitesh Choudhary for the insightful MongoDB aggregation pipeline tutorial! His expertise and clear explanations have been instrumental in enhancing my understanding of this powerful feature. Thank you, Hitesh, for your valuable contribution to the developer community!"
Thank you so so much Man! Such incredible work! WE ARE HAPPY WE HAVE PEOPLE LIKE YOU ON THIS PLANET!
[
{
$unwind: {
path: "$tags",
}
},
{
$group: {
_id: "$_id",
count: {
$sum: 1
}
}
},{
$group: {
_id: null,
avg: {
$avg: "$count"
}
}
}
]
$unwind: This operator breaks up the array field ($tags) into individual documents. If a document has 3 elements in the tags array, it will create 3 separate documents, each containing one element from the array.
$group: The first $group groups these documents back together by their original _id. It counts how many documents were created for each _id, which corresponds to the number of elements in the tags array for each user.
$group: The second $group aggregates these counts into a single document and calculates the average ($avg) number of tags per user.
Guruji aapki is series ki first video se hi dekh rha hu
You taught me about pipeline aggregation in mongo db with detailed explanation....🎉 Thanks 🎉
This is best video to learn MongoDB pipeline. Thankyou sir.........
Hi Hitesh, thank you for such an informative video about MongoDB Aggregration.
I am new to MongoDB and this is very helpful.
For those who want to take it step further to display only the author_name instead of the whole object 🤓 :
[
{
$lookup: {
from: "authors",
localField: "author_id",
foreignField: "_id",
as: "author_details"
}
},
{
$addFields: {
author_details: {$arrayElemAt: ["$author_details", 0]}
}
},
{
$addFields: {
author_name: "$author_details.name"
}
},
{
$project: {
author_name: 1, id: 1, genre: 1, author_id: 1, title: 1
}
}
]
thank you very much for sharing, this is very very very very insightful, you 've just saved me a lot of time of wondering up and down to understand aggregation pipeline
You help me a lot in learning MongoDB operations besides those for CRUD. I am more confident in using aggregation pipeline to collect statistic information now. Thanks you for your work! Expecting your new video on Tailwindcss...
First, thank you for your excellent explanation, I loved the course, enjoyed it a lot, and learned from it. but I would like to add a point, you said at the beginning of the course that this tutorial is for beginners which is not necessary because, this is my first time studying MongoDB aggregation and MongoDB in general, but I do have a background in Software Enginnering. However, I find the course perfect for first learning and global all the basics needed to start working with MongoDB Aggregations, but not enough for more advanced and complex queries. so I recommend you to add a course for advanced and complex queries. we will appreciate it a lot. Thank you!!!
Thanks for your unique way of tutorials, with practical implementation and assignments. Learnt MongoDB and feeling confident in same. Also this helped me in Javascript Backend assignment.
Really liked your way of teaching 😇
I think you taught aggregtion better in english compared to tut on chai aur code
Really good course! Love your energy, very easy to follow along with the different missions
Glad you enjoy it!
This is gold. This is the best tutorial on MongoDB out there. It is nice and easy to follow thank you, bro🙏🙏
Great video on aggregation. Thank you Hitesh! I think we can have more scenarios like operations on array of objects (and when some fields don't exist in some documents). These are more challenging in real life.
This is understated series...u made aggression so easy ❤❤
At 49:18 , Just wanted to tell, We can count No. of males and females using this also
[
{
$group: {
_id: '$gender',
count: {
$count: {}
}
}
}
]
But $count is generally used for counting no of documents in a stage.
In grouping use $sum instead of $count
@@AliHaider-tr9rm Yup
Amazing way of teaching. Thank you so much!
Guruji aap aap mahaan hoo❤❤
this can be another way the question
Q. number of users which have "ad" as a tag at index 2
[
{
$unwind: {
path: "$tags",
includeArrayIndex: "arrayindex",
},
},
{
$match: {
$and: [
{
arrayindex: 1,
},
{
tags: "ad",
},
],
},
},
{
$count: 'users'
}
]
Thank you sir. This vid took my mongo knowledge at next level ❤❤
Nice video sir! Will surely implement this in my side project!
omg, I can't believe this is the best video on MongoDB aggregation pipeline
You are a career maker. love from UAE
Thank you very much. It helps me a lot
Thanks much Hitesh
you have nailed it, Bro! ❤🔥
This video is awesome 😁😁
Thanks Hitesh
thank you sir ♥ ♥
The video helped me a lot to complete your JS backend assignment.
Your ChaiAurBackend series is awesome, too
Thanks so much for this tutorial.Could you take it a little further by actually writing a backend NodeJs to utilize those query results of the aggregation.I mean how to use it in the backend
in node you can use it like you might have used products.find() method or products.findByID() method, in the same way you can use product.Aggregate() and inside parenthesis write your aggregation query. If that helps ✌.
@@sidhantdhyani9567 : Perfect!!!! That solves my query and it has helped me so much. Now i am beginning to like mongodb.
I just needed this! thanks so much!
If anyone is not able to use the regex expression as shown in the video use this instead
[
{
$match: {
phone:{
$regex: "^\\+1"
}
}
},
{
$count:"Number starting from +1"
}
]
Can u make video on indexing too
Really helpful video! I learned alot
we want more videos on MongoDB Aggregation Pipeline
Thank you sir, for important tutorial
Thanks for the tutorial ❤.
Sir, I am not able to access lco app and website.Its saying contact Admin.Please help
Thanks a lot sir for this tutorial❤❤
great explanation sir
Keep watching
Sir es video ko hindi mai layea please so that I can learn properly
Sir can you make a video on Docker & K8s? That would be really helpful :)
thank you so. much sir
hii sir love from chai aur code😃😆
Excited 🎉
Sir, could ypu help us with a mongo db aggregation project as it is almost impossible to find a good one it will help us get to know more how this is used in production live projects
It’s going on at my Hindi channel
I am not able to find any good D3 js tutorial video ?? Any suggestions.
awesome content
east or best bhai is best
Sorry sir I cannot purchase your paid course bacause you say that real developer is that who do self not watch only tutorial
Sir mongo DB को हिंदी मैं लाहो sir plz......
best video
Where can i get the list of questions??
Thank you sir ❤
It looks like array.map().filter().reduce().
Great! Thanks.
great course
great tutorial tysm
Helpful, Thanks
🤟🤘
Its amazing ❤
Bro can make me software enginner in month!
Thanks ❤❤
thanks
thank you sir :)
I miss LCO
Ok sir
wow😮😮
Sir app aggregation ki Hindi me video bda doo
Sir 1 on 1 kese baat kr skte hai aap se ?
❤
❤❤
nice video
👍
Hello ❤sir ji
❤❤❤❤❤❤❤❤❤❤❤
Not able to understand, what is being happening here . Kabhi kabhi bolte hai aap free course sa kuch a to z mil jayega. kabhi backend ka 6999 rs lete hai
though course is good
ok
Hey
#chaiaurcode
Hi sir
Hlo sir ji
nice video
Hi sir