MongoDB Query Language (MQL) MongoDB ডেটাবেসে ডেটা অনুসন্ধান, ইনসার্ট, আপডেট, ডিলিট এবং অন্যান্য কার্যক্রম পরিচালনার জন্য ব্যবহৃত কমান্ডগুলির একটি সেট। এটি MongoDB এর ডেটাবেস ম্যানিপুলেশন ভাষা, যা SQL-এর মতো ডেটাবেস পরিচালনার জন্য ডিজাইন করা হয়েছে, তবে MongoDB এর স্কিমা-লেস এবং ডকুমেন্ট-ভিত্তিক মডেল অনুসারে এটি কিছুটা আলাদা। MQL JSON স্টাইলের কুয়েরি অপারেশন ব্যবহার করে, যা MongoDB তে ডেটা পরিচালনা করা সহজ এবং নমনীয় করে তোলে।
MQL এর মৌলিক কুয়েরি অপারেশন
1. ডেটা খোঁজা (Find)
MongoDB তে ডেটা খুঁজতে find() ফাংশন ব্যবহার করা হয়। আপনি কুয়েরি ফিল্টার দিয়ে নির্দিষ্ট ডেটা বের করতে পারেন।
সব ডকুমেন্ট খোঁজা:
db.collectionName.find()নির্দিষ্ট কুয়েরি ব্যবহার করে খোঁজা:
db.collectionName.find({ name: "John" })কুয়েরি ফিল্টারিং (যেমন বয়স ৩০ এর বেশি):
db.collectionName.find({ age: { $gt: 30 } })
2. ডেটা ইনসার্ট (Insert)
MongoDB তে নতুন ডেটা ইনসার্ট করতে insertOne() বা insertMany() ফাংশন ব্যবহার করা হয়।
একটি ডকুমেন্ট ইনসার্ট করা:
db.collectionName.insertOne({ name: "Alice", age: 25 })একাধিক ডকুমেন্ট ইনসার্ট করা:
db.collectionName.insertMany([ { name: "Bob", age: 30 }, { name: "Charlie", age: 35 } ])
3. ডেটা আপডেট (Update)
MongoDB তে ডেটা আপডেট করতে updateOne(), updateMany(), বা replaceOne() ব্যবহার করা হয়।
একটি ডকুমেন্ট আপডেট করা:
db.collectionName.updateOne( { name: "John" }, { $set: { age: 31 } } )একাধিক ডকুমেন্ট আপডেট করা:
db.collectionName.updateMany( { age: { $gt: 30 } }, { $set: { status: "Older" } } )
4. ডেটা ডিলিট (Delete)
MongoDB তে ডেটা মুছতে deleteOne() বা deleteMany() ব্যবহার করা হয়।
একটি ডকুমেন্ট মুছতে:
db.collectionName.deleteOne({ name: "John" })একাধিক ডকুমেন্ট মুছতে:
db.collectionName.deleteMany({ age: { $lt: 30 } })
5. অ্যাগ্রিগেশন (Aggregation)
MongoDB তে ডেটার উপর অ্যাগ্রিগেশন অপারেশন করার জন্য aggregate() ফাংশন ব্যবহার করা হয়। অ্যাগ্রিগেশন পিপলাইন ডেটাকে ফিল্টার, গ্রুপ, এবং অন্যান্য অপারেশন করার জন্য ব্যবহার করা হয়।
ডেটা গ্রুপিং এবং গননা করা:
db.collectionName.aggregate([ { $group: { _id: "$age", count: { $sum: 1 } } } ])ডেটা সোর্টিং:
db.collectionName.aggregate([ { $sort: { age: 1 } } ])
MQL অপারেটর
MongoDB তে কিছু বিশেষ অপারেটর রয়েছে, যা কুয়েরি ফিল্টারিং এবং ডেটা ম্যানিপুলেশনকে আরও নমনীয় এবং শক্তিশালী করে তোলে। কিছু গুরুত্বপূর্ণ MQL অপারেটর হল:
1. তুলনা অপারেটর (Comparison Operators)
$eq: সমানdb.collectionName.find({ age: { $eq: 30 } })$gt: বড়db.collectionName.find({ age: { $gt: 30 } })$lt: ছোটdb.collectionName.find({ age: { $lt: 30 } })$gte: বড় বা সমানdb.collectionName.find({ age: { $gte: 30 } })$lte: ছোট বা সমানdb.collectionName.find({ age: { $lte: 30 } })
2. যুক্তি অপারেটর (Logical Operators)
$and: একাধিক শর্তের জন্যdb.collectionName.find({ $and: [ { age: { $gt: 20 } }, { age: { $lt: 30 } } ] })$or: একাধিক শর্তের মধ্যে যে কোনও একটি শর্ত পূর্ণ হলেdb.collectionName.find({ $or: [ { age: { $gt: 30 } }, { age: { $lt: 20 } } ] })
3. অন্যান্য অপারেটর
$in: নির্দিষ্ট মানের মধ্যে থাকাdb.collectionName.find({ age: { $in: [20, 30, 40] } })$exists: কোন ফিল্ড উপস্থিত রয়েছে কিনাdb.collectionName.find({ address: { $exists: true } })
সারাংশ
MongoDB Query Language (MQL) MongoDB ডেটাবেসের জন্য একটি শক্তিশালী কুয়েরি ভাষা যা ডেটা অনুসন্ধান, আপডেট, ইনসার্ট, ডিলিট এবং অন্যান্য কার্যক্রম পরিচালনা করার জন্য ব্যবহৃত হয়। MQL JSON স্টাইলের কুয়েরি অপারেশন ব্যবহার করে ডেটা ম্যানিপুলেশনকে সহজ এবং নমনীয় করে তোলে। MongoDB তে বিভিন্ন ধরনের তুলনা, যুক্তি এবং অন্যান্য অপারেটর ব্যবহার করে কাস্টম কুয়েরি তৈরি করা যায়। MQL MongoDB ডেটাবেসের কার্যক্রম পরিচালনার জন্য একটি গুরুত্বপূর্ণ টুল।
MongoDB ডেটাবেসে ডেটা অনুসন্ধানের জন্য বেশ কিছু কুয়েরি অপারেশন ব্যবহার করা হয়। এর মধ্যে find এবং findOne হল দুটি প্রধান অপারেশন যা ডেটাবেস থেকে ডেটা অনুসন্ধান করতে ব্যবহৃত হয়। এই কুয়েরি অপারেশনগুলো MongoDB Shell বা MongoDB Compass এর মাধ্যমে খুব সহজে প্রয়োগ করা যেতে পারে।
1. find অপারেশন
find অপারেশন MongoDB ডেটাবেসের একটি বা একাধিক ডকুমেন্ট ফেরত দেয়। এটি একটি কালেকশনের মধ্যে সব ডকুমেন্ট বা নির্দিষ্ট শর্তে মিলে এমন ডকুমেন্ট খুঁজে পেতে ব্যবহৃত হয়।
সিনট্যাক্স:
db.<collectionName>.find(<query>, <projection>)
<collectionName>: ডেটাবেসের কালেকশনের নাম<query>: কুয়েরি শর্ত (যেমন:{ name: "John" }বা{ age: { $gt: 30 } })<projection>: কোন ফিল্ডগুলো রিটার্ন করতে হবে (ঐচ্ছিক, ডিফল্টভাবে সব ফিল্ড রিটার্ন হয়)
উদাহরণ:
সব ডকুমেন্ট খুঁজুন:
db.users.find()এই কুয়েরি "users" কালেকশনের সব ডকুমেন্ট রিটার্ন করবে।
নির্দিষ্ট শর্তে ডকুমেন্ট খুঁজুন:
db.users.find({ age: { $gt: 30 } })এই কুয়েরি "users" কালেকশন থেকে বয়স ৩০ এর বেশি এমন সব ডকুমেন্ট রিটার্ন করবে।
কেবল নির্দিষ্ট ফিল্ড রিটার্ন করা:
db.users.find({ name: "John" }, { name: 1, age: 1 })এই কুয়েরি শুধুমাত্র
nameএবংageফিল্ড রিটার্ন করবে যখনnameএর মান "John" হবে। MongoDB তে1দিয়ে প্রদর্শনযোগ্য ফিল্ডগুলো চিহ্নিত করা হয়।
2. findOne অপারেশন
findOne অপারেশন MongoDB তে প্রথম মিলে যাওয়া একটি ডকুমেন্ট রিটার্ন করে। এটি একক ডকুমেন্টের জন্য ব্যবহৃত হয় এবং কুয়েরির সাথে মেলে প্রথম ডকুমেন্টটি ফেরত দেয়।
সিনট্যাক্স:
db.<collectionName>.findOne(<query>, <projection>)
<query>: কুয়েরি শর্ত<projection>: কোন ফিল্ডগুলো রিটার্ন করতে হবে (ঐচ্ছিক)
উদাহরণ:
একটি ডকুমেন্ট খুঁজুন:
db.users.findOne({ name: "John" })এই কুয়েরি "users" কালেকশন থেকে প্রথম মিলে যাওয়া "John" নামের ডকুমেন্ট রিটার্ন করবে।
নির্দিষ্ট ফিল্ড রিটার্ন করা:
db.users.findOne({ name: "John" }, { name: 1, age: 1 })এই কুয়েরি
nameএবংageফিল্ড রিটার্ন করবে, কিন্তু শুধু প্রথম মিলে যাওয়া ডকুমেন্টের জন্য।
সারাংশ
MongoDB তে find এবং findOne হল দুইটি গুরুত্বপূর্ণ কুয়েরি অপারেশন যা ডেটাবেস থেকে ডকুমেন্ট অনুসন্ধান করতে ব্যবহৃত হয়। find অপারেশন একাধিক ডকুমেন্ট রিটার্ন করতে সক্ষম, whereas findOne অপারেশন প্রথম মিলে যাওয়া একটি ডকুমেন্ট রিটার্ন করে। এই দুটি কুয়েরি অপারেশন MongoDB তে ডেটা খোঁজা এবং ফিল্টারিং করার জন্য খুবই গুরুত্বপূর্ণ এবং কার্যকরী।
MongoDB তে কুয়েরি অপারেটরগুলি ব্যবহার করা হয় ডেটা অনুসন্ধান এবং প্রক্রিয়া করার জন্য। এই অপারেটরগুলি বিভিন্ন ধরনের শর্তের ভিত্তিতে ডেটা নির্বাচন করতে সহায়তা করে। MongoDB তে তিন ধরনের প্রধান কুয়েরি অপারেটর রয়েছে: তুলনা অপারেটর, লজিক্যাল অপারেটর, এবং এলিমেন্ট অপারেটর।
1. তুলনা অপারেটর (Comparison Operators)
তুলনা অপারেটরগুলি ডেটার মানের ভিত্তিতে ডেটা অনুসন্ধান করতে ব্যবহৃত হয়।
$eq(সমান): ডেটার মানের সাথে সমান থাকা ডকুমেন্টগুলি মেলে।db.collection.find({ age: { $eq: 30 } })$ne(অসমান): ডেটার মানের সাথে অসমান থাকা ডকুমেন্টগুলি মেলে।db.collection.find({ age: { $ne: 30 } })$gt(বড়): ডেটার মান যেগুলোর থেকে বড়, সেগুলিকে মেলে।db.collection.find({ age: { $gt: 30 } })$gte(বড় অথবা সমান): ডেটার মান যেগুলোর থেকে বড় অথবা সমান, সেগুলিকে মেলে।db.collection.find({ age: { $gte: 30 } })$lt(ছোট): ডেটার মান যেগুলোর থেকে ছোট, সেগুলিকে মেলে।db.collection.find({ age: { $lt: 30 } })$lte(ছোট অথবা সমান): ডেটার মান যেগুলোর থেকে ছোট অথবা সমান, সেগুলিকে মেলে।db.collection.find({ age: { $lte: 30 } })$in(ভিতরে): একটি নির্দিষ্ট মান যেগুলোর মধ্যে থাকে, সেগুলি মেলে।db.collection.find({ age: { $in: [30, 40, 50] } })$nin(ভিতরে নয়): একটি নির্দিষ্ট মান যেগুলোর মধ্যে নেই, সেগুলি মেলে।db.collection.find({ age: { $nin: [30, 40, 50] } })
2. লজিক্যাল অপারেটর (Logical Operators)
লজিক্যাল অপারেটরগুলি একাধিক শর্তের ভিত্তিতে ডেটা নির্বাচন করতে ব্যবহৃত হয়।
$and(এবং): একাধিক শর্তের মধ্যে সব শর্ত মেনে চলা ডকুমেন্টগুলি মেলে।db.collection.find({ $and: [{ age: { $gte: 30 } }, { age: { $lt: 40 } }] })$or(অথবা): একাধিক শর্তের মধ্যে যেকোনো একটি শর্ত পূর্ণ হলে ডকুমেন্ট মেলে।db.collection.find({ $or: [{ age: { $lte: 30 } }, { age: { $gte: 40 } }] })$not(নট): একটি শর্তের বিপরীত ডকুমেন্ট মেলে।db.collection.find({ age: { $not: { $gte: 30 } } })$nor(অথবা নয়): একাধিক শর্তের মধ্যে সব শর্ত পূর্ণ না হলে ডকুমেন্ট মেলে।db.collection.find({ $nor: [{ age: { $gte: 30 } }, { age: { $lte: 20 } }] })
3. এলিমেন্ট অপারেটর (Element Operators)
এলিমেন্ট অপারেটরগুলি ডেটার উপস্থিতি বা ডেটার টাইপ পরীক্ষা করতে ব্যবহৃত হয়।
$exists(অস্তিত্ব): একটি ফিল্ড ডকুমেন্টে রয়েছে কিনা তা চেক করতে ব্যবহৃত হয়। এটিtrueবাfalseহতে পারে।true: ফিল্ডটি বিদ্যমান ডকুমেন্টগুলি মেলে।false: ফিল্ডটি অনুপস্থিত ডকুমেন্টগুলি মেলে।
db.collection.find({ age: { $exists: true } }) db.collection.find({ age: { $exists: false } })$type(টাইপ): একটি ফিল্ড নির্দিষ্ট BSON টাইপের কিনা তা চেক করতে ব্যবহৃত হয়।db.collection.find({ age: { $type: "int" } }) db.collection.find({ age: { $type: 16 } }) // 16 হল BSON টাইপ `int`
উদাহরণ কুয়েরি
তুলনা অপারেটর ব্যবহার করে: বয়স ৩০ এর কম বা ৬০ এর বেশি ব্যবহারকারীদের খুঁজুন।
db.users.find({ age: { $lt: 30, $gt: 60 } })লজিক্যাল অপারেটর ব্যবহার করে: বয়স ৩০ এর বেশি বা ২০ এর কম ব্যবহারকারীদের খুঁজুন।
db.users.find({ $or: [{ age: { $gt: 30 } }, { age: { $lt: 20 } }] })এলিমেন্ট অপারেটর ব্যবহার করে: যেখানে
ageফিল্ড উপস্থিত।db.users.find({ age: { $exists: true } })$inব্যবহার করে: বয়স ২৫, ৩০ অথবা ৩৫ এর মধ্যে ব্যবহারকারীদের খুঁজুন।db.users.find({ age: { $in: [25, 30, 35] } })
সারাংশ
MongoDB তে তুলনা অপারেটর, লজিক্যাল অপারেটর, এবং এলিমেন্ট অপারেটর ডেটাবেসে ডেটা অনুসন্ধানে অত্যন্ত শক্তিশালী টুল হিসেবে কাজ করে। তুলনা অপারেটর ব্যবহার করে ডেটার মানের ভিত্তিতে কুয়েরি করা যায়, লজিক্যাল অপারেটর ব্যবহার করে একাধিক শর্তকে যুক্ত বা বিপরীতভাবে কাজ করা যায়, এবং এলিমেন্ট অপারেটর ব্যবহার করে ডেটার উপস্থিতি বা টাইপ চেক করা যায়। এই অপারেটরগুলি MongoDB ডেটাবেসে খুবই নমনীয় এবং জটিল কুয়েরি তৈরি করতে সহায়তা করে।
MongoDB তে Projection এবং Sorting হল ডেটা খোঁজার এবং প্রক্রিয়া করার দুটি গুরুত্বপূর্ণ কৌশল। এই দুটি পদ্ধতি MongoDB ডেটাবেসের মধ্যে ডেটা অনুসন্ধান এবং ফলাফল আরও কার্যকরভাবে নিয়ন্ত্রণ করতে ব্যবহৃত হয়। নিচে Projection এবং Sorting এর ধারণা এবং ব্যবহার বিস্তারিতভাবে আলোচনা করা হয়েছে।
Projection
Projection হল MongoDB তে কুয়েরি রেজাল্টে কোন ফিল্ডগুলো দেখানো হবে তা নির্ধারণ করার পদ্ধতি। MongoDB তে find() ফাংশন ব্যবহার করে আপনি ডেটাবেস থেকে ডকুমেন্ট খুঁজে বের করতে পারেন, এবং Projection এর মাধ্যমে আপনি নির্দিষ্ট ফিল্ডগুলো বা কনটেন্ট বাদ দিয়ে কেবলমাত্র প্রয়োজনীয় ডেটা রিটার্ন করতে পারেন।
MongoDB তে Projection এর মূল উদ্দেশ্য হল অপ্রয়োজনীয় ডেটা বাদ দিয়ে কেবলমাত্র প্রয়োজনীয় ডেটা রিটার্ন করা, যাতে পারফরম্যান্স আরও বৃদ্ধি পায়।
Projection ব্যবহার করা
MongoDB তে Projection ব্যবহার করতে find() ফাংশনের দ্বিতীয় প্যারামিটার হিসেবে একটি অবজেক্ট পাস করা হয়, যেখানে ফিল্ডগুলো নির্বাচন করা হয় যা আপনি রিটার্ন করতে চান বা বাদ দিতে চান।
সকল ফিল্ডের মধ্যে নির্দিষ্ট কিছু ফিল্ড নির্বাচন করা:
db.myCollection.find( { name: "John" }, // কুয়েরি { name: 1, age: 1 } // Projection, শুধুমাত্র name এবং age দেখাবে )এখানে
1এর মানে হল যে আপনি সেই ফিল্ডটি চান এবং0এর মানে হল যে আপনি সেই ফিল্ডটি বাদ দিতে চান।প্রকৃত ফিল্ড বাদ দেওয়া:
db.myCollection.find( { name: "John" }, { _id: 0 } // _id বাদ দিবে )_id ফিল্ড MongoDB তে ডিফল্টভাবে প্রতি ডকুমেন্টে থাকে, যদি আপনি এটি বাদ দিতে চান, তবে
"_id": 0ব্যবহার করতে হবে।অন্য ফিল্ড বাদ দিয়ে সব ফিল্ড দেখানো:
db.myCollection.find( { name: "John" }, { name: 1 } )এখানে কেবল
nameফিল্ডটি রিটার্ন হবে এবং অন্যান্য সমস্ত ফিল্ড বাদ দেওয়া হবে।
Sorting
Sorting হল MongoDB তে ডেটা সাজানোর পদ্ধতি, যা আপনাকে ফলাফল বিভিন্ন ক্রমে সাজানোর সুযোগ দেয় (যেমন, বাড়ানো বা কমানো)। MongoDB তে sort() ফাংশন ব্যবহার করে আপনি কুয়েরি রেজাল্ট সজ্জিত করতে পারেন। Sorting সাধারণত 1 (আনAscending) বা -1 (ডাউনDescending) দিয়ে নির্ধারিত হয়।
Sorting ব্যবহার করা
ডেটা বাড়ানো (Ascending) ক্রমে সাজানো:
db.myCollection.find().sort({ age: 1 })এখানে
1ব্যবহার করা হয়েছে যার মানে হল "ascending" বা "বাড়ানো"। এতে সমস্ত ডকুমেন্ট বয়স অনুসারে বাড়ানো ক্রমে সাজানো হবে।ডেটা কমানো (Descending) ক্রমে সাজানো:
db.myCollection.find().sort({ age: -1 })এখানে
-1ব্যবহার করা হয়েছে যার মানে হল "descending" বা "কমানো"। এতে সমস্ত ডকুমেন্ট বয়স অনুসারে কমানো ক্রমে সাজানো হবে।একাধিক ফিল্ডে Sorting করা: আপনি একাধিক ফিল্ডে sorting করতে পারেন। প্রথমে এক ফিল্ড দিয়ে সাজিয়ে তারপর অন্য ফিল্ড দিয়ে সাজানো যাবে।
db.myCollection.find().sort({ age: 1, name: -1 })এই কুয়েরি প্রথমে
ageএর উপর ascending (বাড়ানো) ক্রমে সাজাবে এবং তারপর একই বয়সের ডকুমেন্টগুলিকেnameফিল্ডের উপর descending (কমানো) ক্রমে সাজাবে।
Projection এবং Sorting একসাথে ব্যবহার করা
MongoDB তে আপনি Projection এবং Sorting একসাথে ব্যবহার করতে পারেন। এটি কুয়েরির ফলাফলকে আরও কার্যকরী এবং দ্রুত করতে সহায়ক।
Projection এবং Sorting একসাথে:
db.myCollection.find( { age: { $gt: 20 } }, { name: 1, age: 1 } // Projection, name এবং age দেখাবে ).sort({ age: -1 }) // Sorting, বয়স অনুযায়ী descending ক্রমে সাজাবেএখানে কুয়েরি প্রথমে বয়স ২০ এর বেশি ডকুমেন্টগুলো খুঁজে বের করবে, তারপর
nameএবংageফিল্ডগুলো দেখাবে, এবং শেষেageফিল্ডে descending ক্রমে সাজাবে।
সারাংশ
MongoDB তে Projection এবং Sorting হল গুরুত্বপূর্ণ পদ্ধতি যা ডেটা খোঁজার এবং প্রক্রিয়া করার ক্ষমতা বাড়ায়। Projection এর মাধ্যমে আপনি ডেটাবেস থেকে নির্দিষ্ট ফিল্ডগুলো নির্বাচন করতে পারেন, এবং Sorting এর মাধ্যমে ডেটা সজ্জিত করতে পারেন। এই দুটি ফিচার MongoDB তে ডেটার পারফরম্যান্স বৃদ্ধি করতে সাহায্য করে, বিশেষ করে বড় ডেটাসেট বা জটিল কুয়েরি অপারেশনগুলির ক্ষেত্রে।
MongoDB তে Aggregation Framework একটি শক্তিশালী এবং নমনীয় পদ্ধতি, যা ডেটার উপর বিভিন্ন প্রক্রিয়া সম্পাদন করতে ব্যবহৃত হয়। এটি ডেটাবেসের ডেটা বিশ্লেষণ, পরিবর্তন, গ্রুপিং, সোর্টিং, ফিল্টারিং এবং অন্যান্য অনেক ধরনের জটিল অপারেশন করতে সক্ষম। Aggregation Framework MongoDB তে একাধিক ডকুমেন্ট থেকে প্রয়োজনীয় তথ্য সংগ্রহ এবং কাস্টমাইজড ফলাফল তৈরি করার জন্য ব্যবহৃত হয়।
Aggregation Pipeline
MongoDB তে Aggregation পিপলাইন হলো এমন একটি প্রযুক্তি, যা একাধিক স্টেপ বা অপারেশনকে একসাথে প্রসেস করার জন্য ব্যবহৃত হয়। এটি SQL তে GROUP BY, JOIN, HAVING এর মতো কার্যাবলীর সমান।
- Pipelines বা "পিপলাইন" একাধিক অ্যাগ্রিগেশন স্টেপের সমষ্টি, যেগুলি একটি নির্দিষ্ট আদেশে একে অপরের উপর কাজ করে।
- MongoDB তে একটি পিপলাইন সাধারণত একটি অর্ডার অনুসরণ করে, যেখানে প্রতিটি স্টেপ পরবর্তী স্টেপের আউটপুটকে ইনপুট হিসেবে গ্রহণ করে।
Basic Structure of an Aggregation Pipeline:
db.collection.aggregate([
{ $match: { field: value } }, // 1st stage
{ $group: { _id: "$field", total: { $sum: 1 } } }, // 2nd stage
{ $sort: { total: -1 } } // 3rd stage
])
Aggregation Operators
MongoDB তে Aggregation Framework বিভিন্ন ধরনের অপারেটর প্রদান করে, যা ডেটা প্রসেসিংয়ের বিভিন্ন কাজ সহজ করে তোলে। কিছু প্রধান Aggregation Operators:
1. $match
$match অপারেটর MongoDB তে ডেটা ফিল্টার করার জন্য ব্যবহৃত হয়, যেমন SQL তে WHERE ক্লজ। এটি একটি কন্ডিশনাল ফিল্টার হিসেবে কাজ করে।
উদাহরণ:
db.orders.aggregate([
{ $match: { status: "completed" } }
])
এটি সমস্ত "completed" স্ট্যাটাসের অর্ডার ফেরত দেবে।
2. $group
$group অপারেটর MongoDB তে ডেটা গ্রুপ করতে ব্যবহৃত হয়, যেমন SQL তে GROUP BY। এটি এক বা একাধিক ফিল্ডের ভিত্তিতে গ্রুপ করে, এবং গ্রুপ করা ডেটার উপর অ্যাগ্রিগেট ফাংশন (যেমন, sum, avg, min, max) প্রয়োগ করতে সাহায্য করে।
উদাহরণ:
db.sales.aggregate([
{ $group: { _id: "$product", totalSales: { $sum: "$amount" } } }
])
এটি প্রতিটি পণ্যের মোট বিক্রয় পরিমাণ গণনা করবে।
3. $project
$project অপারেটর MongoDB তে ডেটার কাঠামো পরিবর্তন করতে ব্যবহৃত হয়। এটি ডেটার কিছু ফিল্ডকে অন্তর্ভুক্ত বা বাদ দিতে পারে এবং নতুন ফিল্ডও তৈরি করতে পারে।
উদাহরণ:
db.orders.aggregate([
{ $project: { _id: 0, orderId: 1, customerName: 1 } }
])
এটি শুধুমাত্র orderId এবং customerName ফিল্ডগুলো সহ ডকুমেন্ট ফেরত দিবে এবং _id ফিল্ডটি বাদ দেবে।
4. $sort
$sort অপারেটর MongoDB তে ডেটা সাজানোর জন্য ব্যবহৃত হয়, যেমন SQL তে ORDER BY।
উদাহরণ:
db.orders.aggregate([
{ $sort: { orderDate: -1 } }
])
এটি ডেটা orderDate এর মাধ্যমে DESCENDING অর্ডারে সাজাবে।
5. $limit
$limit অপারেটর MongoDB তে ডেটার পরিমাণ সীমাবদ্ধ করার জন্য ব্যবহৃত হয়। এটি সাধারণত বৃহৎ ডেটাসেট থেকে একটি নির্দিষ্ট সংখ্যক ডকুমেন্ট ফেরত দিতে ব্যবহৃত হয়।
উদাহরণ:
db.orders.aggregate([
{ $limit: 5 }
])
এটি প্রথম 5টি ডকুমেন্ট ফিরিয়ে দিবে।
6. $skip
$skip অপারেটর MongoDB তে ডেটা থেকে কিছু ডকুমেন্ট বাদ দেয়ার জন্য ব্যবহৃত হয়। এটি offset এর মতো কাজ করে।
উদাহরণ:
db.orders.aggregate([
{ $skip: 10 }
])
এটি প্রথম 10টি ডকুমেন্ট বাদ দিয়ে বাকি ডকুমেন্টগুলো ফিরিয়ে দেবে।
7. $unwind
$unwind অপারেটর MongoDB তে একটি অ্যারে ফিল্ডের উপর কাজ করে। এটি একটি অ্যারের প্রতিটি উপাদানকে আলাদা আলাদা ডকুমেন্টে বিভক্ত করে।
উদাহরণ:
db.orders.aggregate([
{ $unwind: "$items" }
])
এটি items নামক অ্যারে ফিল্ডে প্রতিটি আইটেমকে একটি পৃথক ডকুমেন্টে রূপান্তর করবে।
Aggregation Example
এখানে একটি MongoDB অ্যাগ্রিগেশন পিপলাইন উদাহরণ দেওয়া হলো, যেখানে ডেটাকে ফিল্টার, গ্রুপ এবং সাজানো হয়েছে:
db.orders.aggregate([
{ $match: { status: "completed" } }, // Filter orders with status "completed"
{ $group: { _id: "$customerId", totalAmount: { $sum: "$amount" } } }, // Group by customerId and calculate total amount
{ $sort: { totalAmount: -1 } }, // Sort by totalAmount in descending order
{ $limit: 5 } // Get top 5 customers with the highest totalAmount
])
এটি সমস্ত "completed" স্ট্যাটাসের অর্ডারগুলো ফিল্টার করবে, গ্রুপ করবে customerId এর ভিত্তিতে এবং মোট অর্ডারের পরিমাণ গণনা করবে, তারপর মোট পরিমাণের উপর ভিত্তি করে সেগুলো সাজাবে এবং সর্বোচ্চ ৫টি গ্রাহক দেখাবে।
সারাংশ
MongoDB এর Aggregation Framework একটি শক্তিশালী টুল যা ডেটার উপর বিভিন্ন প্রক্রিয়া সম্পাদন করতে ব্যবহৃত হয়। এটি MongoDB ডেটাবেসে ডেটাকে গ্রুপ, ফিল্টার, সোর্ট, এবং অ্যাগ্রিগেশন অপারেশন করতে সাহায্য করে। Aggregation Pipeline এর মাধ্যমে একাধিক স্টেপে ডেটা প্রসেস করা সম্ভব এবং MongoDB ডেটাবেসের জটিল কুয়েরি অপারেশন কার্যকরভাবে পরিচালনা করা যায়। MongoDB তে বিভিন্ন Aggregation Operators যেমন $match, $group, $project, $sort ইত্যাদি ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়, যা ডেটাবেস ম্যানেজমেন্ট এবং ডেটা বিশ্লেষণে অত্যন্ত কার্যকর।
Read more