MongoDB এগ্রিগেট কাউন্ট দিয়ে কিভাবে ডকুমেন্ট গণনা করা যায়

Mongodb Egrigeta Ka Unta Diye Kibhabe Dakumenta Ganana Kara Yaya



নাম থেকে বোঝা যায়, MongoDB-তে $count সমষ্টিকে অবশ্যই ফিল্ড রেকর্ড গণনার জন্য ব্যবহার করতে হবে। রেকর্ড গণনা করার একটি জনপ্রিয় উপায় হল count() পদ্ধতি ব্যবহার করা। উপরন্তু, নির্দিষ্ট একত্রীকরণ অপারেটর আপনাকে সমষ্টিগত পাইপলাইনের পূর্ববর্তী পর্যায় থেকে আনা রেকর্ড গণনা করতে দেয়। আজকের এই গাইডের মধ্যে, আমরা কোড উদাহরণ ব্যবহার করে MongoDB-এর গণনা সমষ্টি নিয়ে আলোচনা করব।

উদাহরণ 01

MongoDB-তে ডাটাবেস সংগ্রহের ক্ষেত্রে $count অপারেশন করতে, আমাদের অনেক রেকর্ড থাকতে হবে। তাই, আমরা 'Test' নামে একটি সংগ্রহ তৈরি করেছি এবং insertMany() ফাংশনটি ব্যবহার করে একসাথে 12টি রেকর্ড সন্নিবেশিত করেছি। এখন, এই 'পরীক্ষা' সংগ্রহের রেকর্ডগুলি মঙ্গোডিবি শেলে find() ফাংশন ক্যোয়ারির মাধ্যমে প্রদর্শিত হয়েছে। আপনি দেখতে পাচ্ছেন যে এতে মোট তিনটি ক্ষেত্র রয়েছে: _id, নাম এবং স্কোর।

test> db.Test.find({})







এখন, যেকোনো ক্ষেত্রে $count স্টেজ প্রয়োগ করতে, আমাদের অবশ্যই 'db' নির্দেশের মধ্যে MongoDB-এর সামগ্রিক ফাংশন ব্যবহার করতে হবে। সামগ্রিক ফাংশন শর্ত বিবৃতি নিয়ে গঠিত, প্রায়ই একটি নির্দিষ্ট ক্ষেত্রে $match অপারেটর ব্যবহার করে, একটি নতুন ক্ষেত্র অনুসরণ করে যা $count অপারেটর ব্যবহার করে নির্দিষ্ট শর্ত ক্ষেত্র থেকে প্রাপ্ত মোট গণনা প্রদর্শন করে।



আমাদের ক্ষেত্রে, আমরা $match অপারেটরকে স্কোর ক্ষেত্রে '60' মানের জন্য মিলে যাওয়া রেকর্ডগুলি অনুসন্ধান করার জন্য নিযুক্ত করছি, যখন $count অপারেটরটি আনা হয়েছে মোট রেকর্ডের সংখ্যা গণনা করতে এবং সেগুলিকে নীচে প্রদর্শন করতে ব্যবহার করা হয়েছে 'SameScore' নামে নতুন ক্ষেত্র। এই প্রশ্নের আউটপুট '2' মান সহ একটি ক্ষেত্র 'SameScore' দেখাচ্ছে যা নির্দেশ করে যে 'পরীক্ষা' সংগ্রহে 'স্কোর' মান '60' 2 সহ দুটি রেকর্ড রয়েছে।



db.Test.aggregate([ { $match: { 'স্কোর' : 60 } }, { $count: 'একই স্কোর' } ])

আপনি $count এগ্রিগেশন ব্যবহার করতে পারেন সংখ্যা ছাড়া অন্য ক্ষেত্রগুলি গণনা করতে, যেমন টেস্ট সংগ্রহের 'নাম' ক্ষেত্র। আমরা সংগ্রহে রেকর্ড অনুসন্ধান করার জন্য ম্যাচ একত্রীকরণ ব্যবহার করছি যেখানে নামের ক্ষেত্রের মান 'জন' আছে। গণনা সমষ্টি সফলভাবে মোট রেকর্ডের সংখ্যা গণনা করেছে যা 2টি।





db.Test.aggregate([ { $match: { 'নাম' : 'জন' } }, { $count: 'একই নাম' } ])

উদাহরণ 02

আসুন উপরের ক্যোয়ারীটি আপডেট করি এবং বিভিন্ন রেকর্ড পেতে অন্য শর্ত প্রয়োগ করি। এইবার, আমরা রেকর্ডের মোট গণনা পাওয়ার জন্য স্কোর ক্ষেত্রের $ম্যাচ অ্যাগ্রিগেশন প্রয়োগ করব যেখানে স্কোর ক্ষেত্রের মান 30-এর কম। গণনা একত্রীকরণটি রেকর্ডের মোট সংখ্যা গণনা করবে এবং একটি নতুন যোগ করবে। কলাম 'গ্রেডডি।' আউটপুট মিলিত মানের জন্য গণনা সংখ্যা হিসাবে '2' ফলাফল দেখায়।

db.Test.aggregate( [ { $match: { স্কোর: { $lt: 30 } } }, { $count: 'গ্রেডডি' } ])

ফিল্ড রেকর্ডে 1টির বেশি শর্ত সম্পাদন করতে লজিক্যাল অপারেটরদের প্রয়োগ করার সময় আপনি $count সমষ্টি ব্যবহার করতে পারেন। অতএব, $ এবং অপারেটর ব্যবহার করে 'স্কোর' ক্ষেত্রে মোট দুটি শর্ত প্রয়োগ করা হয়েছে: gte (এর চেয়ে বড় বা সমান) এবং lte (এর চেয়ে কম এবং সমান)। ফলাফল পেতে এবং এর রেকর্ড গণনা করার জন্য উভয় শর্তই সত্য হতে হবে। মোট গণনা দেখায় যে মেলার মানদণ্ডের সাথে পাঁচটি রেকর্ড রয়েছে।



db.Test.aggregate( [ { $match: { '$ এবং' : [ { 'স্কোর' : {$gte: 60 }}, { 'স্কোর' : {$lte: 80 }} ] }},

{ $count: 'বি গ্রেড' } ])

উদাহরণ 03

উপরের চিত্রগুলিতে, আমরা শুধুমাত্র নির্দিষ্ট ক্ষেত্রের মানগুলির যেমন একটি নির্দিষ্ট স্কোর বা নামের জন্য মিলে যাওয়া রেকর্ডের সংখ্যা পেতে গণনা সমষ্টি ব্যবহার করেছি। MongoDB-এর একত্রীকরণ পদ্ধতি আপনাকে সংগ্রহে থাকা ডুপ্লিকেট মান ধারণকারী সমস্ত রেকর্ডের গণনা সংখ্যা পেতে দেয়।

এর জন্য, আপনাকে নিচের মত aggregate function কমান্ডের মধ্যে $group এগ্রিগেশন ব্যবহার করতে হবে। ক্ষেত্র _id ব্যবহার করা হয়েছে 'নাম' ক্ষেত্র নির্দিষ্ট করতে যেখানে গণনা একত্রিতকরণ কাজ করবে। এর সাথে, NameCount ব্যবহারকারী-সংজ্ঞায়িত ক্ষেত্রটি 'নাম' ক্ষেত্রের বেশ কয়েকটি সদৃশ গণনা করতে $count সমষ্টি ব্যবহার করবে।

এই প্রশ্নের জন্য আউটপুট নীচে প্রদর্শিত হয়েছে. এটিতে 'নাম' ক্ষেত্র থেকে মান রয়েছে এবং মানের অনুলিপি অনুসারে NameCount ক্ষেত্রের মধ্যে তাদের গণনা সংখ্যা রয়েছে, যেমন Cillian-এর 4টি ডুপ্লিকেট রয়েছে ইত্যাদি।

db.Test.aggregate([ { $group: { _id: '$নাম' , 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' : 'রাত্রি' })

একইভাবে, কাউন্ট() ফাংশনটি নেস্টেড ক্ষেত্রেও প্রয়োগ করা যেতে পারে, যেমন 'শিক্ষক' সংগ্রহ থেকে 'সাব' ক্ষেত্রের সাবফিল্ড 'ফাই'। আমরা 'ফাই' সাবফিল্ডে 14-এর কম মান নির্দেশ করে 'lte' অপারেটর ব্যবহার করে মিলের মানদণ্ড নির্দিষ্ট করেছি। এই নির্দেশের আউটপুট 14 এর কম মান সহ '2' অর্থাৎ 4টি রেকর্ড প্রদর্শন করছে।

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

উপসংহার

এই নির্দেশিকাটি বেশ কয়েকটি কোড উদাহরণ সহ MongoDB-এর $count একত্রীকরণ ব্যবহার করার বিষয়ে প্রদর্শন এবং বিস্তারিত করে চলেছে। উদাহরণগুলির মধ্যে রয়েছে নির্দিষ্ট মান রেকর্ড এবং সংগ্রহের মাধ্যমে সমস্ত ক্ষেত্রের রেকর্ডগুলির জন্য গণনা নম্বর আনার জন্য গণনা একত্রিতকরণের অন্তর্নিহিততা। এছাড়াও, এটি অ্যারে ক্ষেত্র এবং এমবেডেড (নেস্টেড) ক্ষেত্রের গণনা সমষ্টির ব্যবহার অন্তর্ভুক্ত করে। শেষ পর্যন্ত, গণনা একত্রীকরণ এবং গণনা ফাংশনের মধ্যে পার্থক্য করার জন্য count() ফাংশন উদাহরণ অন্তর্ভুক্ত করা হয়েছে।