MongoDB ایگریگیٹ کاؤنٹ کے ساتھ دستاویزات کی گنتی کیسے کریں۔

Mongodb Aygrygy Kawn K Sat Dstawyzat Ky Gnty Kys Kry



جیسا کہ نام سے پتہ چلتا ہے، MongoDB میں $count کی جمع کو فیلڈ ریکارڈز کی گنتی کے لیے استعمال کیا جانا چاہیے۔ ریکارڈ شمار کرنے کے مقبول طریقوں میں سے ایک کاؤنٹ() طریقہ استعمال کرنا ہے۔ مزید برآں، کچھ ایگریگیشن آپریٹرز آپ کو مجموعی پائپ لائن کے پچھلے مرحلے سے لائے گئے ریکارڈز کو شمار کرنے دیتے ہیں۔ آج اس گائیڈ کے اندر، ہم کوڈ کی مثالوں کا استعمال کرتے ہوئے MongoDB کی گنتی کی جمع پر بات کریں گے۔

مثال 01

MongoDB میں ڈیٹا بیس جمع کرنے کے شعبوں پر $count آپریشن کرنے کے لیے، ہمارے پاس متعدد ریکارڈز ہونے کی ضرورت ہے۔ لہذا، ہم نے 'Test' کے نام سے ایک مجموعہ بنایا اور insertMany() فنکشن کا استعمال کرتے ہوئے اس میں بیک وقت 12 ریکارڈز ڈالے۔ اب، اس 'ٹیسٹ' کلیکشن کے ریکارڈ مونگو ڈی بی شیل پر find() فنکشن استفسار کے ذریعے دکھائے گئے ہیں۔ آپ دیکھ سکتے ہیں کہ اس میں کل تین فیلڈز ہیں: _id، نام، اور سکور۔

test> db.Test.find({})







اب، کسی بھی فیلڈ پر $count مرحلے کو لاگو کرنے کے لیے، ہمیں 'db' ہدایات کے اندر MongoDB کا مجموعی فنکشن استعمال کرنا چاہیے۔ مجموعی فنکشن کنڈیشن اسٹیٹمنٹ پر مشتمل ہوتا ہے، اکثر ایک مخصوص فیلڈ پر $match آپریٹر کا استعمال کرتا ہے، اس کے بعد ایک نیا فیلڈ ہوتا ہے جو $count آپریٹر کا استعمال کرتے ہوئے مخصوص کنڈیشن فیلڈ سے حاصل کردہ کل گنتی کو ظاہر کرتا ہے۔



ہمارے معاملے میں، ہم اسکور فیلڈ میں '60' کی قدر کے لیے مماثل ریکارڈز تلاش کرنے کے لیے $match آپریٹر کا استعمال کرتے رہے ہیں، جب کہ $count آپریٹر کو حاصل کیے گئے ریکارڈز کی کل تعداد کو شمار کرنے اور ان کے نیچے ڈسپلے کرنے کے لیے استعمال کیا گیا ہے۔ نیا فیلڈ جس کا نام 'SameScore' ہے۔ اس استفسار کے آؤٹ پٹ میں '2' کی قدر کے ساتھ ایک فیلڈ 'SameScore' دکھایا گیا ہے جس سے یہ ظاہر ہوتا ہے کہ مجموعہ 'Test' میں '60' کی قیمت 2 کے ساتھ دو ریکارڈ موجود ہیں۔



db.Test.aggregate([ { $match: { 'اسکور' : 60 } }، { $count: 'سیم سکور' } ])

آپ نمبروں کے علاوہ دیگر فیلڈز کو شمار کرنے کے لیے $count کی جمع کا استعمال بھی کر سکتے ہیں، جیسے کہ ٹیسٹ کلیکشن کا 'نام' فیلڈ۔ ہم مجموعہ میں ریکارڈ تلاش کرنے کے لیے میچ ایگریگیشن کا استعمال کرتے رہے ہیں جہاں نام کی فیلڈ کی قدر 'جان' ہے۔ گنتی کے مجموعے نے کامیابی کے ساتھ مماثل ریکارڈز کی کل تعداد کو گن لیا ہے جو کہ 2 ہے۔





db.Test.aggregate([ { $match: { 'نام' : 'جان' } }، { $count: 'ایک جیسا نام' } ])

مثال 02

آئیے مندرجہ بالا استفسار کو اپ ڈیٹ کریں اور مختلف ریکارڈ حاصل کرنے کے لیے دوسری شرط لگائیں۔ اس بار، ہم ریکارڈز کی کل گنتی حاصل کرنے کے لیے اسکور فیلڈ کی $match ایگریگیشن کا اطلاق کریں گے جہاں اسکور فیلڈ کی قدر 30 سے ​​کم ہے۔ کالم 'گریڈ ڈی۔' آؤٹ پٹ نتیجہ '2' کو مماثل قدر کے شمار نمبر کے طور پر دکھاتا ہے۔

db.Test.aggregate( [ { $match: { سکور: { $lt: 30 } } }، { $count: 'گریڈ ڈی' } ])

آپ منطقی آپریٹرز کو فیلڈ ریکارڈز پر 1 سے زیادہ شرطیں انجام دینے کے لیے لاگو کرتے ہوئے $count جمع بھی استعمال کر سکتے ہیں۔ لہذا، $اور آپریٹر کا استعمال کرتے ہوئے 'اسکور' فیلڈ پر کل دو شرائط لاگو کی گئی ہیں: gte (اس سے زیادہ یا اس کے برابر) اور lte (اس سے کم اور اس کے برابر)۔ نتیجہ حاصل کرنے اور اس کے ریکارڈ شمار کرنے کے لیے دونوں شرائط درست ہونی چاہئیں۔ کل گنتی سے پتہ چلتا ہے کہ ملاپ کے معیار کے ساتھ پانچ ریکارڈز ہیں۔



db.Test.aggregate( [ { $match: { '$اور' : [ { 'اسکور' : {$gte: 60 }}، { 'اسکور' : {$lte: 80 }} ] }}،

{ $count: 'گریڈ بی' } ])

مثال 03

مندرجہ بالا مثالوں میں، ہم نے صرف مخصوص فیلڈ ویلیوز کے لیے مماثل ریکارڈز کی تعداد حاصل کرنے کے لیے گنتی کی جمع کا استعمال کیا ہے، جیسے کہ ایک مخصوص سکور یا نام۔ MongoDB کا جمع کرنے کا طریقہ آپ کو مجموعہ میں ڈپلیکیٹ اقدار پر مشتمل تمام ریکارڈز کی گنتی کی تعداد حاصل کرنے کی اجازت دیتا ہے۔

اس کے لیے، آپ کو نیچے کی طرح مجموعی فنکشن کمانڈ کے اندر $group ایگریگیشن استعمال کرنے کی ضرورت ہے۔ فیلڈ _id کا استعمال 'نام' فیلڈ کو بتانے کے لیے کیا گیا ہے جس پر گنتی کا مجموعہ کام کرے گا۔ اس کے ساتھ ساتھ، NameCount صارف کی وضاحت کردہ فیلڈ $count کی جمع کو استعمال کرے گی تاکہ 'نام' فیلڈ میں کئی ڈپلیکیٹس کو شمار کیا جا سکے۔

اس سوال کا آؤٹ پٹ نیچے دکھایا گیا ہے۔ اس میں 'نام' فیلڈ کی اقدار اور NameCount فیلڈ میں اقدار کی نقل کے مطابق ان کی گنتی کی تعداد شامل ہے، جیسے Cillian کے پاس 4 ڈپلیکیٹس ہیں، وغیرہ۔

db.Test.aggregate([ { $group: { _id: '$name' , NameCount: { $count: {} }, }, }, ])

مثال 04

ہم مخصوص فیلڈ ویلیوز کو گننے کے لیے نیسٹڈ فیلڈ ریکارڈز پر گنتی کی جمع کا استعمال بھی کر سکتے ہیں۔ اس کی وضاحت کرنے کے لیے، ہم نے 'ٹیچر' کے نام سے ایک مجموعہ بنایا ہے اور اس میں دیگر فیلڈز کے ساتھ نیسٹڈ فیلڈ 'سب' اور اری ٹائپ فیلڈ 'شفٹ' شامل کیا ہے: نام اور تنخواہ۔ find() فنکشن اس مجموعہ کے پانچوں ریکارڈز دکھا رہا ہے۔

test> db.Teacher.find({})

اب، ہم نے میچ آپریٹر پر مشتمل مجموعی فنکشن کا اطلاق کیا ہے۔ نیز، $اور آپریٹر کو 'سب' فیلڈ کے ذیلی فیلڈ 'ریاضی' پر لاگو کیا گیا ہے، جو دو مختلف شرائط پر مشتمل ہے۔ اس کے بعد گنتی کی گئی ہے۔ آؤٹ پٹ سے پتہ چلتا ہے کہ دو ریکارڈ ہیں جہاں ذیلی فیلڈ ریاضی میں 10 سے زیادہ اور 20 سے کم اقدار ہیں۔

db.Teacher.aggregate( [ { $match: { '$اور' : [ { 'ذیلی ریاضی' : {$gte: 10 }}، { 'ذیلی ریاضی' : {$lte: بیس }} ] }}، { $count: 'گریڈ اے' } ])

مثال 05

کاؤنٹ ایگریگیشن استعمال کرنے کے بجائے اس بار کاؤنٹ() فنکشن کا استعمال کرتے ہوئے واضح کرنے کے لیے آخری مثال کو دیکھیں۔ لہذا، کاؤنٹ() فنکشن 'ٹیچر' کلیکشن یعنی 'شفٹ' کے اری ٹائپ فیلڈ میں لاگو کیا گیا ہے۔ انڈیکس 2 کا استعمال کرتے ہوئے سرنی فیلڈ کے لیے اشاریہ جات کا استعمال کرتے ہوئے، ہم نے مماثل معیار کو 'رات' کے طور پر بیان کیا ہے۔ یہ اندراج 'رات' کے لئے شمار کی کل تعداد کے طور پر '2' کو آؤٹ پٹ کرتا ہے۔

db.Teacher.count({ 'shift.2' : 'رات' })

بالکل اسی طرح، کاؤنٹ() فنکشن کو نیسٹڈ فیلڈز پر بھی لاگو کیا جا سکتا ہے، جیسے کہ مجموعہ 'ٹیچر' سے 'سب' فیلڈ کا سب فیلڈ 'phy'۔ ہم نے 'Lte' آپریٹر کا استعمال کرتے ہوئے مماثلت کے معیار کی وضاحت کی ہے جو 'phy' ذیلی فیلڈ میں 14 سے کم اقدار کی نشاندہی کرتی ہے۔ اس ہدایت کا آؤٹ پٹ 14 سے کم قیمت کے ساتھ '2' یعنی 4 ریکارڈ دکھا رہا ہے۔

db.Teacher.count( { 'sub.phy' : { $lte: 14 } })

نتیجہ

یہ گائیڈ کئی کوڈ مثالوں کے ساتھ MongoDB کے $count مجموعے کو استعمال کرنے کا مظاہرہ اور وضاحت کر رہا ہے۔ مثالوں میں مخصوص ویلیو ریکارڈز اور مجموعوں کے ذریعے تمام فیلڈ ریکارڈز کے لیے شمار کی تعداد حاصل کرنے کے لیے شمار کی جمع کا مضمرات شامل ہیں۔ نیز، اس میں ارے فیلڈز اور ایمبیڈڈ (نیسٹڈ) فیلڈز پر کاؤنٹ ایگریگیشن کا استعمال شامل ہے۔ آخر میں، کاؤنٹ ایگریگیشن اور کاؤنٹ فنکشن کے استعمال کے درمیان فرق کرنے کے لیے Count() فنکشن کی مثال شامل کی گئی ہے۔