Indexed Query এবং Mango Query এর বাস্তব উদাহরণ

বাস্তব উদাহরণ এবং ডেমো - পাউচডিবি (PouchDB) - Database Tutorials

297

ArangoDB এবং PouchDB, দুটি NoSQL ডেটাবেসের মধ্যে Mango Query এবং Indexed Query এর মাধ্যমে আপনি ডেটার উপর অনুসন্ধান (queries) চালাতে পারেন। Mango Query PouchDB এবং CouchDB এর একটি শক্তিশালী কুয়েরি ইঞ্জিন যা SQL-এর মতো কাজ করে, তবে NoSQL ডেটাবেসের জন্য উপযুক্ত। আর Indexed Query এর মাধ্যমে ডেটা দ্রুত অনুসন্ধান এবং ফিল্টার করা সম্ভব হয়।

এখানে PouchDB ব্যবহার করে Indexed Query এবং Mango Query এর বাস্তব উদাহরণ দেখানো হয়েছে।


১. Indexed Query

Indexed Query হল একটি অনুসন্ধান পদ্ধতি যেখানে একটি ইনডেক্স তৈরি করে নির্দিষ্ট ফিল্ডে ডেটা অনুসন্ধান করা হয়। এটি পারফরম্যান্স বৃদ্ধি করতে সাহায্য করে, বিশেষত যখন ডাটাবেসে বড় পরিমাণে ডেটা থাকে।

Indexed Query উদাহরণ:

ধরা যাক, আপনি age এবং city ফিল্ডের ভিত্তিতে ডেটা অনুসন্ধান করতে চান। এর জন্য প্রথমে আপনাকে ইনডেক্স তৈরি করতে হবে।

Step 1: ইনডেক্স তৈরি

const db = new PouchDB('my_database');

// age এবং city ফিল্ডে ইনডেক্স তৈরি করা
db.createIndex({
  index: {
    fields: ['age', 'city']
  }
}).then(() => {
  console.log('Index created successfully');
}).catch(err => {
  console.error('Error creating index:', err);
});

এখানে, createIndex() ফাংশন ব্যবহার করে আমরা age এবং city ফিল্ডের উপর ইনডেক্স তৈরি করেছি।

Step 2: Indexed Query ব্যবহার করা

db.find({
  selector: {
    age: { $gte: 20 },
    city: { $eq: 'Dhaka' }
  },
  fields: ['_id', 'name', 'age', 'city'],
  sort: [{ age: 'desc' }]
}).then(result => {
  console.log('Query result:', result.docs);
}).catch(err => {
  console.error('Error executing query:', err);
});

এখানে:

  • selector ব্যবহার করে আমরা age এবং city ফিল্ডের উপর শর্ত দিয়েছি।
  • sort অপশন ব্যবহার করে age ফিল্ডের ভিত্তিতে ফলাফল সাজানো হয়েছে।

এইভাবে Indexed Query ব্যবহার করে দ্রুত এবং কার্যকরীভাবে ডেটা অনুসন্ধান করা সম্ভব।


২. Mango Query

Mango Query হল PouchDB এবং CouchDB এর একটি ডেটাবেস কুয়েরি ইঞ্জিন, যা JSON ফরম্যাটে কুয়েরি স্ট্রিং তৈরি করে এবং SQL-এর মতো স্টাইলের কুয়েরি অপারেশন সম্পাদন করতে সক্ষম।

Mango Query উদাহরণ:

ধরা যাক, আমাদের একটি ডেটাবেস আছে যেখানে বিভিন্ন ব্যবহারকারীর ডেটা আছে এবং আমরা age এবং name ফিল্ডের ভিত্তিতে অনুসন্ধান করতে চাই।

Step 1: Mango Query ব্যবহার করা

db.find({
  selector: {
    age: { $gte: 18 },
    name: { $eq: 'John Doe' }
  },
  fields: ['_id', 'name', 'age'],
  sort: [{ age: 'asc' }]
}).then(result => {
  console.log('Mango query result:', result.docs);
}).catch(err => {
  console.error('Error executing Mango query:', err);
});

এখানে:

  • selector এর মাধ্যমে আমরা age এবং name ফিল্ডের শর্ত দিয়ে ডেটা খুঁজে বের করেছি।
  • fields ব্যবহার করে আমরা কেবলমাত্র _id, name, এবং age ফিল্ড দেখতে চেয়েছি।
  • sort অপশন দিয়ে ফলাফলগুলো age ফিল্ড অনুযায়ী সজ্জিত করা হয়েছে।

Step 2: MongoDB এর মতো ব্যবহার

Mango Query ব্যবহার করে MongoDB এর মতো ডেটা অনুসন্ধান করা সম্ভব। এখানে $gte (Greater Than or Equal) এবং $eq (Equal) অপারেটর ব্যবহার করা হয়েছে। Mango Query এর মাধ্যমে JSON অবজেক্টের শর্ত অনুসারে ডেটা খোঁজা হয়, যা MongoDB এর স্টাইলের মতো।


৩. Mango Query এর আরো জটিল উদাহরণ

ধরা যাক, আপনি age এবং name ফিল্ডের উপর আরো জটিল শর্ত ব্যবহার করতে চান:

db.find({
  selector: {
    age: { $gte: 20, $lte: 40 }, // বয়স ২০ থেকে ৪০ এর মধ্যে
    name: { $regex: 'John' }  // নামের মধ্যে "John" থাকা
  },
  fields: ['_id', 'name', 'age'],
  sort: [{ name: 'asc' }]
}).then(result => {
  console.log('Complex Mango query result:', result.docs);
}).catch(err => {
  console.error('Error executing Mango query:', err);
});

এখানে:

  • $gte এবং $lte ব্যবহার করে age ফিল্ডের জন্য রেঞ্জ নির্ধারণ করা হয়েছে।
  • $regex ব্যবহার করে name ফিল্ডের মধ্যে John শব্দটি থাকা ডেটা অনুসন্ধান করা হয়েছে।

সারাংশ

  • Indexed Query: এটি ইনডেক্স তৈরি করে নির্দিষ্ট ফিল্ডে ডেটা দ্রুত অনুসন্ধান করতে সাহায্য করে। এটি পারফরম্যান্স বৃদ্ধির জন্য আদর্শ।
  • Mango Query: এটি JSON অবজেক্টের মতো শর্ত দিয়ে কুয়েরি পরিচালনা করতে সক্ষম। Mango Query PouchDB-তে SQL-স্টাইল অনুসন্ধান এবং জটিল শর্ত দিয়ে ডেটা খুঁজে বের করতে সাহায্য করে।

PouchDB তে Indexed Query এবং Mango Query ব্যবহার করে আপনি ডেটা অনুসন্ধানকে আরও দ্রুত এবং কার্যকরী করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...