কম্পিউটার টিউটোরিয়াল

MongoDB-এ $or অপারেটরসহ ইন্ডেক্স কোয়েরি করা

MongoDB-এ $or অপারেটর ব্যবহার করার সময় ইন্ডেক্স কাজ করে কিনা তা যাচাই করতে explain() মেথড ব্যবহার করা হয়।

ইন্ডেক্স তৈরি করা

> db.indexOrQueryDemo.ensureIndex({"First":1});

আউটপুট

{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 2, "numIndexesAfter" : 3, "ok" : 1 }

দ্বিতীয় ইন্ডেক্স তৈরি

> db.indexOrQueryDemo.ensureIndex({"Second":1});

আউটপুট

{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 3, "numIndexesAfter" : 4, "ok" : 1 }

$or কোয়েরি explain()সহ

> db.indexOrQueryDemo.find({$or:[{First:1}, {Second:2}]}).explain();

এক্সপ্লেইন আউটপুট (সংক্ষিপ্ত)

{ "queryPlanner" : { "plannerVersion" : 1, "namespace" : "test.indexOrQueryDemo", "parsedQuery" : { "$or" : [ { "First" : { "$eq" : 1 } }, { "Second" : { "$eq" : 2 } } ] }, "winningPlan" : { "stage" : "SUBPLAN", "inputStage" : { "stage" : "FETCH", "inputStage" : { "stage" : "OR", "inputStages" : [ { "stage" : "IXSCAN", "keyPattern" : { "First" : 1 }, "indexName" : "First_1" }, { "stage" : "IXSCAN", "keyPattern" : { "Second" : 1 }, "indexName" : "Second_1" } ] } } } }, "ok" : 1 }

বিশ্লেষণ

  • winningPlan-এ OR স্টেজ দেখতে পাচ্ছি
  • প্রতিটি শর্তের জন্য পৃথক IXSCAN (ইন্ডেক্স স্ক্যান) হচ্ছে
  • First_1 এবং Second_1 ইন্ডেক্স দুটোই ব্যবহার হচ্ছে
  • MongoDB $or কোয়েরিতে প্রতিটি ক্লজের জন্য আলাদা ইন্ডেক্স ব্যবহার করতে পারে

সর্বোত্তম অনুশীলন

  • $or-এর প্রতিটি শর্তের জন্য পৃথক ইন্ডেক্স থাকা উচিত
  • কম্পাউন্ড ইন্ডেক্স $or-এ সরাসরি কাজ করে না
  • explain() নিয়মিত ব্যবহার করে কোয়েরি প্ল্যান যাচাই করুন
  1. MongoDB-এ অ্যারে অবজেক্টের নির্দিষ্ট ইনডেক্স আপডেট করা

  2. MongoDB-এ অগরিগেশন ব্যবহার করে ফিল্ডের নাম পরিবর্তন করা

  3. MongoDB-এ $or অপারেটর ব্যবহার করে ডকুমেন্ট ফেচ করা

  4. MongoDB-তে ডট নোটেশন ব্যবহার করে নেস্টেড ডকুমেন্ট আপডেট করা