Amazon DocumentDB MongoDB এর API সমর্থন করে এবং MongoDB-এ ব্যবহৃত MongoDB Query Language (MQL) এর মতোই DocumentDB Query Language (DQL) ব্যবহার করা হয়। DocumentDB-এর কুয়েরি ভাষা JSON ডকুমেন্ট ভিত্তিক এবং MongoDB-এর মত ডেটাকে অনুসন্ধান, সিলেক্ট, আপডেট এবং ডিলিট করার জন্য ব্যবহৃত হয়।
DocumentDB এর কুয়েরি ভাষা MongoDB-এর API-র সাথে সম্পূর্ণ সামঞ্জস্যপূর্ণ, তবে কিছু বৈশিষ্ট্য পার্থক্য থাকতে পারে, কারণ এটি AWS দ্বারা পরিচালিত এবং MongoDB-এর নির্দিষ্ট কিছু বৈশিষ্ট্য সমর্থন নাও করতে পারে।
DocumentDB এ কুয়েরি করা হয় JSON ডকুমেন্টের মাধ্যমে, যা ডেটার নির্দিষ্ট ক্ষেত্র অনুসারে ডেটা রিট্রিভ করতে সহায়ক। ডেটাবেস থেকে ডেটা বের করার জন্য find() মেথড ব্যবহার করা হয়, যা MongoDB-এর মতোই DocumentDB তেও কাজ করে।
উদাহরণ:
db.collection.find({ "name": "John" })
এই কুয়েরিটি name
ফিল্ডের মান "John"
সম্বলিত সব ডকুমেন্ট রিটার্ন করবে।
কুয়েরির মাধ্যমে আপনি বিভিন্ন কন্ডিশন দিয়ে ডেটা ফিল্টার করতে পারেন। MongoDB এর মত, comparison operators যেমন $eq
, $lt
, $gt
, $ne
, $in
, $nin
ইত্যাদি ব্যবহার করে ডেটা ফিল্টার করা যায়।
উদাহরণ:
db.collection.find({ "age": { "$gt": 30 } })
এই কুয়েরিটি age ফিল্ডের মান ৩০ এর বেশি এমন সমস্ত ডকুমেন্ট রিটার্ন করবে।
DocumentDB-তে ডেটা সোর্ট করতে sort() ফাংশন ব্যবহার করা হয়। আপনি ascending অথবা descending অর্ডারে ডেটা সজ্জিত করতে পারেন।
উদাহরণ:
db.collection.find().sort({ "age": 1 })
এটি age ফিল্ডের মান অনুযায়ী ascending অর্ডারে ডকুমেন্ট রিটার্ন করবে।
কিছু ক্ষেত্রে, আপনি ডেটাবেস থেকে কেবল কিছু নির্দিষ্ট ফিল্ডই বের করতে চান, পুরো ডকুমেন্ট নয়। এই প্রক্রিয়াটিকে projection বলা হয়। find()
মেথডের দ্বিতীয় আর্গুমেন্ট হিসেবে প্রজেকশন প্যারামিটার দেওয়া হয়।
উদাহরণ:
db.collection.find({ "name": "John" }, { "age": 1, "city": 1 })
এটি শুধুমাত্র age এবং city ফিল্ড রিটার্ন করবে যেখানে name
"John"
।
DocumentDB-তে ডেটা আপডেট করতে update() অথবা updateOne() এবং updateMany() মেথড ব্যবহার করা হয়। আপডেট করার সময় আপনি $set অপারেটর ব্যবহার করে একটি নির্দিষ্ট ফিল্ডের মান পরিবর্তন করতে পারেন।
উদাহরণ:
db.collection.updateOne({ "name": "John" }, { "$set": { "age": 35 } })
এই কুয়েরিটি name "John"
থাকা ডকুমেন্টটির age ফিল্ডের মান ৩৫ তে আপডেট করবে।
DocumentDB-তে ডেটা মুছতে deleteOne() অথবা deleteMany() মেথড ব্যবহার করা হয়।
উদাহরণ:
db.collection.deleteOne({ "name": "John" })
এই কুয়েরিটি name "John"
থাকা একটি ডকুমেন্ট মুছে ফেলবে।
DocumentDB MongoDB-এর মতো aggregation pipeline সমর্থন করে, যেখানে আপনি group, sum, avg, match, sort ইত্যাদি অপারেটর ব্যবহার করে ডেটা সংকলন করতে পারেন। এটি অনেক জটিল কুয়েরি এবং বিশ্লেষণ করতে ব্যবহৃত হয়।
উদাহরণ:
db.collection.aggregate([
{ "$match": { "age": { "$gte": 30 } } },
{ "$group": { "_id": "$city", "averageAge": { "$avg": "$age" } } }
])
এই কুয়েরিটি age ৩০ এর বেশি থাকা ডকুমেন্টগুলিকে group করে এবং প্রতিটি city-এর গড় age বের করবে।
DocumentDB MongoDB-এর Query Language-এর সাথে বড় পরিমাণে সামঞ্জস্যপূর্ণ হলেও কিছু পার্থক্য রয়েছে।
$out
, $merge
, ইত্যাদি) এখনও DocumentDB তে সমর্থিত নয়।DocumentDB-এর কুয়েরি ভাষা MongoDB-এর মতোই কাজ করে, যা JSON ডকুমেন্টের সাথে সহজেই কাজ করতে দেয়। Find, Update, Delete, Projection, Aggregation ইত্যাদি অপারেটরগুলি ব্যবহার করে আপনি ডেটা দ্রুত এবং কার্যকরভাবে অ্যাক্সেস এবং ম্যানিপুলেট করতে পারেন। MongoDB-এর সাথে সম্পূর্ণ সামঞ্জস্যপূর্ণ হওয়ায়, যারা MongoDB ব্যবহার করছেন তারা সহজেই DocumentDB তে স্থানান্তর করতে সক্ষম হবেন, তবে কিছু পার্থক্য থাকতে পারে।
Amazon DocumentDB MongoDB-তে ব্যবহৃত Query Language (MQL) এর সাথে একটি উচ্চ স্তরের সামঞ্জস্যতা প্রদান করে। এটি MongoDB ব্যবহারকারীদের জন্য একটি সহজ স্থানান্তর প্রক্রিয়া নিশ্চিত করে, বিশেষ করে যখন তারা তাদের অ্যাপ্লিকেশন AWS পরিবেশে স্থানান্তর করতে চান। তবে, MongoDB-এর কিছু উন্নত বৈশিষ্ট্য DocumentDB-তে সমর্থিত নয়। তাই কিছু পার্থক্য রয়েছে, যদিও অধিকাংশ মৌলিক কার্যক্রম ঠিকভাবে কাজ করে।
MongoDB Query Language (MQL) হল MongoDB ডেটাবেসের জন্য ব্যবহৃত একটি শক্তিশালী কুয়েরি ভাষা, যা ডকুমেন্ট ভিত্তিক ডেটা ম্যানিপুলেশন এবং অনুসন্ধান করার জন্য ব্যবহৃত হয়। এতে কুয়েরি, ইনডেক্সিং, এবং অ্যাগ্রিগেশন যেমন বিভিন্ন অপারেশন সহজেই করা যায়। MQL এর কয়েকটি মূল বৈশিষ্ট্য:
update
, upsert
প্রভৃতি ব্যবহৃত হয়।deleteOne
, deleteMany
অপারেশন ব্যবহৃত হয়।DocumentDB MongoDB-এর মতোই find() এবং query() অপারেশন সমর্থন করে, যা JSON স্টাইলের কুয়েরি ব্যবহার করে ডেটা খুঁজে বের করতে সাহায্য করে। সাধারণ কুয়েরি, যেমন find()
, eq
, gt
, lt
, ne
ইত্যাদি, একে অপরের সাথে সামঞ্জস্যপূর্ণ।
উদাহরণ:
db.users.find({ "age": { "$gt": 18 } })
এই কুয়েরি MongoDB এবং DocumentDB উভয়েই সমর্থন করবে, যেখানে এটি "age" ১৮ এর বেশি এমন ব্যবহারকারীদের অনুসন্ধান করবে।
DocumentDB Aggregation Pipelines সমর্থন করে, যা MongoDB-তে ব্যবহৃত অ্যাগ্রিগেশন অপারেশনগুলি চালানোর জন্য ব্যবহৃত হয়। এটি group
, match
, project
, এবং sort
অপারেশনগুলির জন্য MongoDB-এর মতো সমর্থন প্রদান করে।
উদাহরণ:
db.orders.aggregate([
{ "$match": { "status": "shipped" } },
{ "$group": { "_id": "$customerId", "totalAmount": { "$sum": "$amount" } } }
])
এটি MongoDB এবং DocumentDB উভয় ক্ষেত্রেই কাজ করবে, যেখানে এটি "shipped" স্ট্যাটাসের অর্ডারগুলির জন্য গ্রুপিং এবং সেমিং অপারেশন করে।
DocumentDB MongoDB-এর মতো updateOne() এবং updateMany() অপারেশনগুলি সমর্থন করে, যার মাধ্যমে ডেটা আপডেট করা যায়। তবে, কিছু ক্ষেত্রে upsert সমর্থন নাও থাকতে পারে।
উদাহরণ:
db.users.updateOne(
{ "name": "John" },
{ "$set": { "age": 30 } }
)
এই কুয়েরি MongoDB এবং DocumentDB উভয়েই সমর্থন করে, যেখানে "John" নামের ব্যবহারকারীর বয়স ৩০ তে আপডেট হবে।
DocumentDB MongoDB-এর ইনডেক্সিং অপারেশনগুলির মতোই কাজ করে, যেমন single field indexes, compound indexes, এবং text indexes। তবে কিছু অগ্রাধিকার ফিচার যেমন geospatial indexes MongoDB-তে বিদ্যমান থাকলেও DocumentDB-তে তাদের সমর্থন নেই।
DocumentDB MongoDB-এর কিছু উন্নত বৈশিষ্ট্য যেমন Change Streams, Transactions (একাধিক ডকুমেন্টের জন্য), এবং Full-Text Search সম্পূর্ণভাবে সমর্থন করে না। কিছু ক্ষেত্রে aggregation framework এর নির্দিষ্ট ফিচারগুলি ও কাজ নাও করতে পারে।
DocumentDB MongoDB Query Language (MQL) এর সাথে একটি শক্তিশালী সামঞ্জস্যতা প্রদান করে, তবে কিছু ক্ষেত্রে MongoDB-এর উন্নত ফিচারগুলি (যেমন Change Streams, Full-Text Search, এবং ACID Transactions) DocumentDB-তে সমর্থিত নয়। তবে, মৌলিক কুয়েরি অপারেশন এবং অ্যাগ্রিগেশন অপারেশনগুলি MongoDB-এর মতোই কাজ করে, যা MongoDB ব্যবহারকারীদের জন্য DocumentDB তে স্থানান্তর সহজ করে তোলে।
Amazon DocumentDB, MongoDB-এর API সমর্থন করে, যার ফলে আপনি MongoDB-এর Query Language ব্যবহার করে ডেটাবেস থেকে তথ্য অনুসন্ধান এবং ম্যানিপুলেট করতে পারেন। এই প্রক্রিয়াগুলির মধ্যে তিনটি গুরুত্বপূর্ণ কার্যকারিতা হলো Projection, Filtering, এবং Sorting। এগুলি ডেটাবেসের মধ্যে থাকা তথ্যের পরিমাণ কমাতে এবং ফলাফলকে আরো নির্দিষ্ট ও কার্যকরীভাবে সজ্জিত করতে সহায়ক।
Projection এর মাধ্যমে আপনি MongoDB অথবা DocumentDB-তে কুয়েরি চালানোর সময় শুধুমাত্র নির্দিষ্ট ফিল্ডগুলো ফিরিয়ে পেতে পারেন, যা ফলাফলের আউটপুটকে আরও নির্দিষ্ট এবং দ্রুততর করে তোলে।
Projection আপনাকে ডেটাবেসে থাকা ডকুমেন্টের সকল ফিল্ডের পরিবর্তে শুধুমাত্র প্রয়োজনীয় ফিল্ডগুলো নিয়ে আসার সুযোগ দেয়।
ধরা যাক, আপনার একটি users
নামক কলেকশন আছে এবং আপনি শুধুমাত্র name
এবং email
ফিল্ডগুলো দেখতে চান। এর জন্য নিম্নলিখিত কুয়েরি ব্যবহার করতে পারেন:
db.users.find({}, { name: 1, email: 1 })
এখানে:
{}
: সমস্ত ডকুমেন্টের জন্য অনুসন্ধান।{ name: 1, email: 1 }
: শুধুমাত্র name
এবং email
ফিল্ডগুলো ফেরত দিবে, অন্যসব ফিল্ড বাদ দিবে।Note: 1 দিয়ে ফিল্ডটি নির্বাচন করা হয়, এবং 0 দিয়ে বাদ দেওয়া হয়। যদি আপনি কোনো ফিল্ড বাদ দিতে চান, তবে তাকে 0 দিয়ে ইন্ডিকেট করুন।
db.users.find({}, { _id: 0, name: 1, email: 1 })
এখানে _id
ফিল্ড বাদ দেওয়া হয়েছে কারণ ডিফল্টভাবে _id
সবসময় ফিরিয়ে আসে।
Filtering দ্বারা আপনি ডেটাবেস থেকে নির্দিষ্ট শর্ত পূরণের ভিত্তিতে ডেটা প্রাপ্তি করতে পারেন। এটি find()
মেথডের মাধ্যমে অনুসন্ধান পরিচালনার সময় শর্ত আরোপ করে।
ধরা যাক, আপনি users
কলেকশন থেকে শুধুমাত্র সেই সমস্ত ব্যবহারকারীর নাম এবং ইমেইল দেখতে চান, যাদের বয়স ৩০ এর উপরে। এর জন্য কুয়েরি হবে:
db.users.find({ age: { $gt: 30 } }, { name: 1, email: 1 })
এখানে:
{ age: { $gt: 30 } }
: age
ফিল্ডের মান ৩০ এর বেশি এমন ডকুমেন্টগুলো বাছাই করবে।{ name: 1, email: 1 }
: শুধুমাত্র name
এবং email
ফিল্ডগুলো ফিরিয়ে আনবে।DocumentDB এবং MongoDB-এর বিভিন্ন comparison operators ব্যবহার করে আরো জটিল ফিল্টারিং করা যায়, যেমন:
$eq
: সমান$ne
: না সমান$lt
: ছোট$lte
: ছোট অথবা সমান$gt
: বড়$gte
: বড় অথবা সমান$in
: একটি নির্দিষ্ট মানের মধ্যেdb.users.find({ age: { $gte: 18, $lte: 40 } }, { name: 1, age: 1 })
এখানে:
Sorting ব্যবহার করে আপনি ডেটাবেসের রিটার্নকৃত ডেটা সাজাতে পারেন। এটি ডেটাকে একটি নির্দিষ্ট অর্ডারে সাজানোর জন্য ব্যবহৃত হয়, যেমন অ্যাসেন্ডিং (ascending) বা ডেসেন্ডিং (descending) অর্ডারে।
ধরা যাক, আপনি users
কলেকশন থেকে সকল ব্যবহারকারীর নাম এবং বয়স দেখতে চান এবং সেই ডেটাকে বয়স অনুযায়ী সাজাতে চান (অ্যাসেন্ডিং অর্ডারে):
db.users.find({}, { name: 1, age: 1 }).sort({ age: 1 })
এখানে:
.sort({ age: 1 })
: age
ফিল্ডটি অ্যাসেন্ডিং (ascending) অর্ডারে সাজাবে। (1 মানে অ্যাসেন্ডিং, -1 মানে ডেসেন্ডিং)db.users.find({}, { name: 1, age: 1 }).sort({ age: -1 })
এখানে:
.sort({ age: -1 })
: age
ফিল্ডটি ডেসেন্ডিং (descending) অর্ডারে সাজাবে।এগুলি ব্যবহার করে আপনি DocumentDB অথবা MongoDB-এর ডেটা অনুসন্ধান, বিশ্লেষণ এবং পরিচালনাকে আরো কার্যকরী এবং সুনির্দিষ্ট করতে পারেন।
DocumentDB এবং MongoDB উভয়ই Aggregation Pipelines এবং MapReduce সাপোর্ট করে, যা ডেটার উপর জটিল বিশ্লেষণ এবং ট্রান্সফর্মেশন সম্পাদন করতে ব্যবহৃত হয়। এই দুটি ফিচার ডেটা প্রসেসিংয়ের জন্য খুবই শক্তিশালী টুলস, তবে তাদের ব্যবহার ও পারফরম্যান্স ভিন্ন।
Aggregation Pipelines হল MongoDB/DocumentDB-তে ডেটা প্রক্রিয়াকরণের একটি শক্তিশালী পদ্ধতি, যা একাধিক ধাপে ডেটা প্রক্রিয়া করতে সহায়ক। এটি একটি সিরিজ অব স্টেপ বা Stages দ্বারা গঠিত, যেখানে প্রতিটি স্টেজ একটি নির্দিষ্ট কাজ করে, যেমন ডেটা ফিল্টারিং, গ্রুপিং, সোর্টিং, বা প্রজেকশন।
$match
, $group
, $sort
, $project
, $unwind
, ইত্যাদি।$match: ডেটাকে নির্দিষ্ট শর্তে ফিল্টার করা।
{ $match: { age: { $gt: 30 } } }
এই স্টেজটি শুধুমাত্র সেই ডকুমেন্টগুলোকে রাখবে যেখানে age
30 এর বেশি।
$group: ডেটাকে গ্রুপ করা এবং অ্যাগ্রিগেট করা।
{ $group: { _id: "$category", total: { $sum: "$amount" } } }
এটি category
অনুযায়ী ডেটা গ্রুপ করে এবং প্রতিটি গ্রুপের মোট পরিমাণ গণনা করবে।
$sort: ডেটাকে সোর্ট করা।
{ $sort: { total: -1 } }
এটি total
এর ভিত্তিতে ডেটাকে অবতরণীভাবে সাজাবে।
$project: ডেটার কিছু ফিল্ড মুছে ফেলা বা নতুন ফিল্ড তৈরি করা।
{ $project: { name: 1, age: 1, _id: 0 } }
এটি শুধুমাত্র name
এবং age
ফিল্ড রাখবে এবং _id
ফিল্ড বাদ দেবে।
$unwind: অ্যারে ভ্যালু এক্সপ্যান্ড করা।
{ $unwind: "$items" }
যদি items
একটি অ্যারে হয়, তবে এটি প্রতিটি আইটেমের জন্য একটি আলাদা ডকুমেন্ট তৈরি করবে।
db.orders.aggregate([
{ $match: { status: "shipped" } },
{ $group: { _id: "$customer", totalAmount: { $sum: "$amount" } } },
{ $sort: { totalAmount: -1 } },
{ $limit: 5 }
])
এই উদাহরণে:
MapReduce একটি ডেটা প্রসেসিং মডেল যা বড় ডেটাসেটের সাথে কাজ করার সময় প্যারালাল প্রক্রিয়াকরণ সম্পাদন করতে সাহায্য করে। MongoDB/DocumentDB-তে এটি map এবং reduce ধাপে বিভক্ত:
ধরা যাক, আপনার কাছে অর্ডার তথ্য রয়েছে এবং আপনি প্রতিটি গ্রাহকের জন্য মোট পরিমাণ হিসাব করতে চান।
Map Function:
function() {
emit(this.customer, this.amount);
}
এখানে, প্রতিটি ডকুমেন্টের জন্য একটি কী-ভ্যালু পেয়ার তৈরি হচ্ছে, যেখানে customer
কী এবং amount
ভ্যালু।
Reduce Function:
function(key, values) {
return Array.sum(values);
}
এটি গ্রাহকের জন্য সমস্ত পরিমাণ যোগ করে মোট পরিমাণ বের করে।
db.orders.mapReduce(
function() { emit(this.customer, this.amount); },
function(key, values) { return Array.sum(values); },
{ out: "total_sales" }
)
এই MapReduce অপারেশনটি:
amount
এর মোট যোগফল বের করবে।total_sales
নামক একটি নতুন কলে সংরক্ষণ করবে।ফিচার | Aggregation Pipelines | MapReduce |
---|---|---|
সহজতা | সহজ, একাধিক স্টেজ ব্যবহার করে ডেটা প্রক্রিয়া করা যায়। | জটিল, ম্যানুয়ালি দুটি আলাদা ফাংশন (map, reduce) লিখতে হয়। |
পারফরম্যান্স | দ্রুত, বিশেষ করে যখন ডেটার পরিমাণ অনেক বেশি। | সাধারণত কমপার্ট পারফরম্যান্স, বিশেষ করে বড় ডেটাসেটে। |
পুনঃব্যবহারযোগ্যতা | পুনঃব্যবহারযোগ্য, একাধিক স্টেজের মাধ্যমে কাস্টম লজিক প্রয়োগ করা যায়। | পুনঃব্যবহারযোগ্য নয়, পুনরায় লেখার প্রয়োজন হতে পারে। |
ডেটা প্রক্রিয়া | একটি স্ট্রিমিং পদ্ধতিতে ধাপে ধাপে ডেটা প্রক্রিয়া করা হয়। | বড় ডেটাসেট একত্রিত করার জন্য ম্যাপ এবং রিডিউস ফাংশন ব্যবহার করে। |
Aggregation Pipelines এবং MapReduce উভয়ই MongoDB এবং DocumentDB-তে জটিল ডেটা প্রক্রিয়াকরণের জন্য শক্তিশালী টুলস, তবে তাদের মধ্যে পারফরম্যান্স এবং ব্যবহারিক সুবিধার পার্থক্য রয়েছে। Aggregation Pipelines সাধারণত দ্রুত এবং সহজ, এবং এতে কম জটিলতা থাকে, যখন MapReduce বড় ডেটাসেটের সাথে প্যারালাল প্রক্রিয়াকরণ করতে ব্যবহৃত হয়, তবে এটি কিছুটা ধীর গতির হতে পারে এবং এটি সাধারণত কম প্রায়োগিক হয়।
DocumentDB বা MongoDB-এর মতো ডকুমেন্ট-ভিত্তিক ডেটাবেসে complex queries ব্যবস্থাপনা করতে হলে, আপনাকে বিভিন্ন কৌশল এবং অপারেটর ব্যবহার করতে হয়। ডেটাবেসের মাধ্যমে জটিল কুয়েরি তৈরি করা এবং পরিচালনা করা অনেক বড় ডেটাসেটের মধ্যে থেকে সঠিক তথ্য বের করার জন্য অত্যন্ত গুরুত্বপূর্ণ। এই কৌশলগুলির মাধ্যমে আপনি ডেটাকে আরও কার্যকরীভাবে অনুসন্ধান করতে পারবেন।
Complex queries হল এমন কুয়েরি যেগুলি একাধিক শর্ত, ফিল্টার, গ্রুপিং, অর্ডারিং, বা একাধিক ক্ষেত্রের উপর ভিত্তি করে তথ্য অনুসন্ধান বা প্রসেসিং করতে ব্যবহৃত হয়। DocumentDB MongoDB Query Language (MQL)-এর সাহায্যে এই ধরনের কুয়েরি পরিচালনা করে।
Complex Queries সাধারণত অন্তর্ভুক্ত করে:
একটি ডেটা কুয়েরি করার সময়, সাধারণত একাধিক শর্তের ওপর ভিত্তি করে ফিল্টার করা হয়। DocumentDB বিভিন্ন logical operators যেমন $and, $or, $gt, $lt, $eq ইত্যাদি ব্যবহার করে একাধিক শর্ত নিয়ে কুয়েরি করতে সাহায্য করে।
একাধিক শর্তে ডকুমেন্ট ফিল্টার করা:
db.users.find({
"$and": [
{ "age": { "$gte": 25 } },
{ "status": "active" }
]
});
এটি সমস্ত ডকুমেন্ট ফিরিয়ে আনবে যেখানে:
"active"
।এছাড়া, $or অপারেটর ব্যবহার করে আপনি একাধিক শর্তের মধ্যে যেকোন একটি শর্ত মেলে এমন ডেটা বের করতে পারেন।
DocumentDB তে aggregation framework ব্যবহৃত হয় যাতে আপনি ডেটা প্রসেস করতে পারেন এবং তার উপর বিভিন্ন অপারেশন চালাতে পারেন যেমন grouping, summing, filtering, এবং sorting। এই ফ্রেমওয়ার্কটি pipelines ব্যবহার করে ডেটা প্রক্রিয়া করতে সাহায্য করে।
একটি aggregation pipeline কুয়েরি:
db.orders.aggregate([
{ "$match": { "status": "completed" } },
{ "$group": { "_id": "$customer_id", "totalSpent": { "$sum": "$amount" } } },
{ "$sort": { "totalSpent": -1 } }
]);
এটি:
কখনও কখনও আপনি পুরো ডকুমেন্টের বদলে কেবল নির্দিষ্ট ফিল্ডগুলো দেখতে চান। এই সময় projection ব্যবহার করে আপনি নির্দিষ্ট ফিল্ডস নির্বাচন করতে পারেন।
কেবল name এবং age ফিল্ড সহ ডেটা খোঁজা:
db.users.find(
{ "status": "active" },
{ "name": 1, "age": 1, "_id": 0 }
);
এটি কেবল name এবং age ফিরিয়ে আনবে এবং _id বাদ দেবে।
একাধিক ফিল্ডের ওপর ভিত্তি করে আপনি $sort অপারেটর ব্যবহার করে ডেটা সাজাতে পারেন। এটি ডেটাবেসে ডেটা দ্রুত সঠিকভাবে সাজানোর জন্য অত্যন্ত কার্যকরী।
age অনুযায়ী সাজানো (অ্যাসেন্ডিং অর্ডারে):
db.users.find({}).sort({ "age": 1 });
এটি ডেটাবেসের age ফিল্ড অনুযায়ী সাজানো ascending অর্ডারে ফলাফল দেবে। আপনি যদি descending সাজাতে চান, তবে -1
ব্যবহার করবেন:
db.users.find({}).sort({ "age": -1 });
MongoDB, এবং এর মাধ্যমে DocumentDB, সরাসরি joins সাপোর্ট করে না, তবে $lookup অপারেটর ব্যবহার করে বিভিন্ন কোলেকশনের মধ্যে ডেটার সংযোগ (join-like operations) করতে পারে।
orders
এবং customers
কোলেকশন থেকে ডেটা নিয়ে আসা:
db.orders.aggregate([
{
"$lookup": {
"from": "customers",
"localField": "customer_id",
"foreignField": "_id",
"as": "customerDetails"
}
}
]);
এটি orders কোলেকশনের customer_id কে customers কোলেকশনের _id
এর সাথে মিলিয়ে customerDetails নামে একটি নতুন ফিল্ডে সম্পর্কিত ডেটা যুক্ত করবে।
ডেটার পরিমাণ অত্যন্ত বড় হলে, আপনি pagination ব্যবহার করতে পারেন, যাতে ডেটা ছোট অংশে ভাগ হয়ে দেখানো যায় এবং পুরো ডেটাবেস একসাথে লোড না হয়।
প্রথম 10টি রেকর্ড নিয়ে আসা:
db.users.find({}).limit(10);
এটি প্রথম 10টি রেকর্ড ফিরিয়ে আনবে।
পেজিনেশন করার জন্য skip এবং limit একসাথে ব্যবহার করা হয়। উদাহরণস্বরূপ, দ্বিতীয় পেজের 10টি রেকর্ড দেখতে:
db.users.find({}).skip(10).limit(10);
এটি দ্বিতীয় পেজের প্রথম 10টি রেকর্ড ফিরিয়ে আনবে।
Complex queries এর কার্যক্ষমতা বাড়ানোর জন্য indexing অত্যন্ত গুরুত্বপূর্ণ। ইন্ডেক্সিং ডেটাবেসের নির্দিষ্ট ফিল্ডে দ্রুত অনুসন্ধান করতে সহায়ক। DocumentDB MongoDB এর মতো single field, compound, এবং geospatial indexes সমর্থন করে।
age
ফিল্ডে একটি ইনডেক্স তৈরি করা:
db.users.createIndex({ "age": 1 });
এটি age
ফিল্ডের উপর একটি ইনডেক্স তৈরি করবে, যা এই ফিল্ডের মাধ্যমে দ্রুত অনুসন্ধান করতে সহায়ক হবে।
DocumentDB তে complex query management হলো ডেটার অনুসন্ধান এবং প্রক্রিয়াকরণে উন্নতি আনার জন্য বিভিন্ন কৌশল ব্যবহার করা। Aggregation pipelines, projection, $lookup, sorting, filtering, এবং indexing এর মাধ্যমে আপনি কার্যকরীভাবে জটিল কুয়েরি তৈরি করতে পারবেন, যা বড় ডেটাসেট থেকে দ্রুত এবং নির্ভরযোগ্য ফলাফল প্রদান করবে।
common.read_more