If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
पिछले topic में हमें aggregate() Method के बारे में पढ़ा था। और समझा कि Pipeline में कई stages होती हैं , जिनका use हम need के according करते हैं।
उन्ही stages में से एक है $group
stage जो SQL के Group By Statement की तरह work करती है और कि काफी important है।
और इस topic में हम $group
stage के बारे में details से समझेंगे।
●●●
MongoDB में $group
operator एक aggregation pipeline stage है जो documents की grouping में use होता है। जैसे कि SQL में GROUP BY clause काम करता है ठीक उसी तरह से $group
MongoDB में होता है।
$group
operator का use किसी एक field के आधार पर documents को group करने और उस group के लिए various aggregation operations (जैसे sum, average, count, etc.) apply करने के लिए होता है।
अब चूंकि $group
एक stage है तो इसे aggregate() Method के अंदर ही use किया जाता है।
{ $group: { _id : grouping_key , aggregation_operation : field_expression } }
Syntax Explanation
_id
: ये field group key को represent करता है जिसके basis पर documents group किये जायेंगे। इसमें कोइन भी field का हो सकता है या फिर एक document की कुछ specific values भी हो सकती हैं।
<aggregation_operation>
: यह aggregation operation को represent करता है , जैसे कि $sum, $avg, $first, $last, $max, $min, $addToSet, और $push.
<field_expression>
: ये field expression है जिसकी value aggregation operation के लिए use होता है।
●●●
अब $group
stage के कुछ examples देख लेते हैं।
Suppose , आपके पास एक products
collection है। जिसमे category
के साथ product detail और आपको हर category के products की total quantity चाहिए , इसके लिए आप $group
operator का कुछ इस तरह से use करेंगे।
db.products.aggregate([ { $group: { _id: "$category", totalQuantity : { $sum: "$quantity" } } } ])
query में , _id
field category के basis पर documents को group करेगा और totalQuantity
field में हर category की total quantity store होगी।
और इसकी SQL query कुछ इस तरह से होगी।
SELECT category, SUM(quantity) AS totalQuantity FROM products GROUP BY category;
अब अगर आप एक company के employees
collection में से query कर रहे हैं। आप हर department की average salary fetch करना चाहते हैं , जिसके लिए query कुछ इस तरह से होगी।
db.employees.aggregate([ { $group: { _id: "$department", averageSalary: { $avg: "$salary" } } } ])
इसमेंमें , _id
field department के basis पर documents को group करेगा और averageSalary
field में हर department की average salary store होगी।
SQL equivalent query
SELECT department, AVG(salary) AS averageSalary FROM employees GROUP BY department;
●●●