MongoDB বাছাই ক্যোয়ারী ফলাফল

Mongodb Bacha I Kyoyari Phalaphala



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

কিভাবে MongoDB কোয়েরি ফলাফল বাছাই করে?

বাছাই পদ্ধতি একটি একক প্যারামিটার হিসাবে ক্ষেত্র এবং এর সংশ্লিষ্ট মান নেয়। সাজানোর পদ্ধতি JSON ফর্ম্যাটে পরামিতি গ্রহণ করে যেমন {ক্ষেত্র: মান}। সংগ্রহ থেকে সাজানো নথি পেতে একাধিক ক্ষেত্র এবং মানগুলি সর্ট() পদ্ধতিতেও ইনপুট করা যেতে পারে। নিম্নলিখিত নথিটি বিবেচনা করুন যেখানে আমরা আমাদের ডাটাবেসে আরও অনেক নথি সন্নিবেশ করেছি। এই MongoDB ডাটাবেসের নাম 'কর্মচারী'। 'কর্মচারী' সংগ্রহে নীচে দেখানো কর্মচারীদের সমস্ত তথ্য রয়েছে৷

db.Employees.insertMany([
{
'নাম': 'রবার্ট',
'DOB': '14-05-1993',
'লিঙ্গ পুরুষ',
'ইমেইল': ' [ইমেল সুরক্ষিত] ',
'বিভাগ': 'নিরাপত্তা',
'বেতন': 5000
},
{
'নাম': 'কাইল',
'DOB': '31-05-1999',
'লিঙ্গ মহিলা',
'ইমেইল': ' [ইমেল সুরক্ষিত] ',
'বিভাগ': 'আইটি',
'বেতন': 6200
},
{
'নাম': 'ম্যাথিউ',
'DOB': '26-04-1993',
'লিঙ্গ পুরুষ',
'ইমেইল': ' [ইমেল সুরক্ষিত] ',
'বিভাগ': 'হিসাবপত্র',
'বেতন': 3500
},
{
'নাম': 'কেভিন',
'DOB': '14-07-1991',
'লিঙ্গ পুরুষ',
'ইমেইল': ' [ইমেল সুরক্ষিত] ',
'বিভাগ': 'নিরাপত্তা',
'বেতন': 4500
},

{
'নাম': 'জুলিয়া',
'DOB': '09-12-2000',
'লিঙ্গ মহিলা',
'ইমেইল': ' [ইমেল সুরক্ষিত] ',
'বিভাগ': 'আইটি',
'বেতন': 2500
}
])

'কর্মচারী' সংগ্রহটি প্রদত্ত নথির সাথে সন্নিবেশ করা হয়েছে যার নিশ্চিতকরণ নিম্নলিখিত আউটপুটে দেখানো হয়েছে। আমরা সাজানোর প্রশ্নের ফলাফলের কার্যকারিতা দেখানোর জন্য এই সংগ্রহ নথিটি ব্যবহার করতে যাচ্ছি।









উদাহরণ # 1: MongoDB সাজানো না হওয়া সংগ্রহ

যখন অনুসন্ধান ক্যোয়ারী find() পদ্ধতির মাধ্যমে নির্বাহ করা হয়, তখন এটি সর্বদা নথির একটি অবাছাই সংগ্রহ দেয়। নীচে দেওয়া প্রশ্নের ফলাফলের সাথে এটি আরও পরিষ্কার হতে পারে।



>db.Employees.find({},{_id:0})

এখানে, আমাদের কাছে find() পদ্ধতির সাথে “Employee” সংগ্রহের একটি প্রশ্ন রয়েছে। find() পদ্ধতিটি '_id:0' এর সাথে খালি প্যারামিটার নেয়। একটি সহজ ফলাফলের জন্য, '_id:0' অপারেটর ব্যবহার করে নথি আইডি সরানো হয়৷ ডিফল্টরূপে, যখন অনুসন্ধানটি find() পদ্ধতিতে অনুসন্ধান করা হয় তখন আমরা সাজানো না হওয়া সংগ্রহগুলি পাই। নীচে পুনরুদ্ধার করা আউটপুট হল সমস্ত সাজানো নথি এমনভাবে যেটি আমাদের সন্নিবেশের সময় থাকে।





উদাহরণ # 2: মঙ্গোডিবি ক্রমবর্ধমান ক্রমে কোয়েরি ফলাফল

MongoDB-তে সাজানো সংগ্রহটি sort() পদ্ধতি ব্যবহার করে প্রাপ্ত করা হয় যা find() পদ্ধতির পরে স্থাপন করা উচিত। MongoDB-তে sort() পদ্ধতিটি প্যারামিটারটি নেয় যা ক্ষেত্রের নাম এবং নথি সাজানোর ক্রম সহ অন্তর্ভুক্ত করা হয়। ক্ষেত্রটিতে প্যারামিটার হিসাবে আমাদের '1' লিখতে হবে কারণ আমরা এই বিশেষ উদাহরণে আরোহী ক্রমে নথিগুলি পুনরুদ্ধার করব। বাছাই ক্যোয়ারীতে নিম্নলিখিত ক্রমবর্ধমান ক্রমে ফলাফল.



>db.Employees.find().sort({name:1})

এখানে আমরা ফাইন্ড সার্চ কোয়েরির পরে sort() পদ্ধতি ব্যবহার করেছি। সর্ট() পদ্ধতিটি 'নাম' ক্ষেত্রটিকে আরোহী ক্রমে সাজাতে ব্যবহৃত হয় কারণ '1' মানটি নির্দিষ্ট ক্ষেত্রের পাশে রাখা হয়। মনে রাখবেন যে যদি sort() পদ্ধতি কোনো প্যারামেট্রিক মান দিয়ে নির্দিষ্ট করা না থাকে তাহলে সংগ্রহটি সাজানো হবে না। sort() পদ্ধতি থেকে আউটপুট ডিফল্ট ক্রমে প্রাপ্ত হবে। নিচের MongoDB শেলে নাম ক্ষেত্র অনুসারে sort() পদ্ধতির ফলাফল ক্রমবর্ধমান ক্রমে প্রদর্শিত হয়।

উদাহরণ # 3: মঙ্গোডিবি বাছাই ক্রমানুসারে কোয়েরির ফলাফল

এখন, আমরা মঙ্গোডিবি-এর বাছাই করা প্রশ্নের ফলাফলগুলিকে অবরোহ ক্রমে দেখাচ্ছি। এই ধরণের ক্যোয়ারী উপরের উদাহরণের মতো কিন্তু একটি পার্থক্য সহ। অবরোহ ক্রমে, sort() পদ্ধতিটি কলামের নামের বিপরীতে “-1” মান নেয়। নিচের ক্রমানুসারে বাছাই করা প্রশ্নের ফলাফল দেওয়া হল।

>db.Employees.find({},{'email':1,_id:0}).sort({'email':-1})

এখানে, অনুসন্ধান ক্যোয়ারী find() পদ্ধতি দিয়ে শুরু হয় যা “email” ক্ষেত্রটি খুঁজে বের করে এবং শুধুমাত্র “email” মান প্রদান করে। এর পরে, আমরা সর্ট() পদ্ধতিটি নির্দিষ্ট করেছি যা 'ইমেল' ক্ষেত্রটি সাজানোর জন্য ব্যবহৃত হয়, এবং এর পাশের মান '-1' নির্দেশ করে যে প্রাপ্ত বাছাই ফলাফলগুলি নিচের ক্রমে হবে। মঙ্গোডিবি শেলে এটি কার্যকর করার পরে অবরোহী ক্রম সাজানোর প্রশ্নের ফলাফল আনা হয়।

উদাহরণ # 4: একাধিক ক্ষেত্রের জন্য MongoDB সাজানোর কোয়েরি ফলাফল

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

>db.Employees.find({},{_id:0}).sort({'name':1,'salary':1})

এখানে, sort() পদ্ধতিটি 'নাম' এবং 'বেতন' ক্ষেত্রগুলিকে সাজানোর জন্য পাস করা হয়েছে। 'কর্মচারী' সংগ্রহ থেকে 'নাম' ক্ষেত্রটি প্রথমে সাজানো হয়েছে কারণ এটি সর্ট() পদ্ধতির প্রথম আর্গুমেন্ট ক্ষেত্র। তারপর, sort() পদ্ধতিটি দ্বিতীয় আর্গুমেন্ট ক্ষেত্র 'বেতন' সাজায়। উভয় ক্ষেত্রের ক্রম হল '1' যা নির্দেশ করে বাছাই ক্রমবর্ধমান ক্রমে হবে৷ বাছাই ক্যোয়ারী একাধিক ক্ষেত্রের জন্য আউটপুট নীচের নির্দিষ্ট বাছাই ক্রম তৈরি করা হয়.

উদাহরণ # 5: সীমা পদ্ধতি সহ MongoDB সাজান কোয়েরি ফলাফল

উপরন্তু, sort() পদ্ধতি লিমিট() পদ্ধতির সাথেও একত্রিত হতে পারে যা সেই অনুসন্ধান ক্যোয়ারী দ্বারা সাজানো নথির সীমিত সংখ্যা দেয়। limit() পদ্ধতিতে একটি প্যারামিটার হিসাবে একটি পূর্ণসংখ্যার প্রয়োজন, যা আউটপুট সেটে অন্তর্ভুক্ত হওয়া নথির সংখ্যা সীমিত করে। অনুসন্ধান ক্যোয়ারী নীচে সেট করা হয়েছে যা প্রথমে নথিটি সাজায় এবং তারপর নির্দিষ্ট সীমা নথি প্রদান করে৷

>db.Employees.find({},{_id:0}).sort({'department':1,'DOB':1}).limit(4).pretty()

এখানে, আমাদের কাছে সার্চ ক্যোয়ারী রয়েছে যা 'বিভাগ' কলামের জন্য সাজানোর কাজ শুরু করে এবং তারপরে 'DOB' কলামের জন্য ক্রমবর্ধমান ক্রমে sort() পদ্ধতি ব্যবহার করে। বাছাই সম্পন্ন হলে, আমরা সীমিত নথি পুনরুদ্ধারের জন্য এটির পাশে limit() পদ্ধতিটি রেখেছি। সীমা() পদ্ধতিটিকে একটি সংখ্যাসূচক মান '4' দেওয়া হয়েছে যার মানে এটি নিম্নলিখিত স্ক্রিনে দেখানো আউটপুটে শুধুমাত্র চারটি সাজানো নথি প্রদর্শন করে:

উদাহরণ # 6: $sort একত্রিতকরণ সহ MongoDB সাজান কোয়েরি ফলাফল

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

db.Employees.aggregate([ { $sort : { বেতন : 1, _id: -1 } } ])

এখানে, আমরা '$sort' অপারেটর ব্যবহার করতে পারি এমন একটি সমষ্টিগত পদ্ধতির কথা বলেছি। তারপরে, আমাদের কাছে $sort অপারেটর এক্সপ্রেশন রয়েছে যা 'বেতন' কলামকে আরোহী ক্রমে এবং 'আইডি' কলামকে নিচের ক্রমে সাজায়। ক্ষেত্রের উপর প্রয়োগ করা $sort সমষ্টি নিম্নলিখিত ফলাফলগুলিকে আউটপুট করে:

উদাহরণ # 6: MongoDB বাছাই করার পদ্ধতির সাথে কোয়েরি ফলাফল

sort() পদ্ধতিটি skip() পদ্ধতির সাথেও যুক্ত করা যেতে পারে। ফলস্বরূপ ডেটাসেটে একটি নির্দিষ্ট সংখ্যক নথি থাকতে পারে যা skip() পদ্ধতি ব্যবহার করে উপেক্ষা করা হবে। সীমা() পদ্ধতির মতো, skip() পদ্ধতিটিও সাংখ্যিক মান গ্রহণ করে যা এড়িয়ে যাওয়া নথির সংখ্যা নির্দেশ করে। আমরা সর্ট কোয়েরিতে skip() মেথডের সাথে sort() মেথড একত্রিত করেছি।

>db.Employees.find({},{_id:0}).sort({'salary':1}).skip(4).pretty()

এখানে, আমরা sort() পদ্ধতির পাশে skip() পদ্ধতি ব্যবহার করেছি। যখন sort() পদ্ধতি ডকুমেন্টগুলিকে সাজায় তখন এটি sort() পদ্ধতিতে সাজানোর আউটপুট পাস করে। এর পরে, skip() পদ্ধতিটি সংগ্রহ থেকে প্রথম চারটি সাজানো নথি সরিয়ে দেয়।

উপসংহার

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