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

MongoDB-এ $elemMatch ব্যবহার সময় ইন্ডেক্স কাজ না করলে explain() দিয়ে বিশ্লেষণ

MongoDB-এ $elemMatch কোয়েরি করলে ইন্ডেক্স সঠিকভাবে ব্যবহার হচ্ছে কিনা তা যাচাই করতে explain() মেথড ব্যবহার করা হয়। এটি কোয়েরি প্ল্যান দেখায়।

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

> db.workingOfIndexesDemo.createIndex({"Information.StudentDetails.StudentName":1},{ sparse: true, background: true });
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
> db.workingOfIndexesDemo.insertOne({"Information":{"StudentDetails":{"StudentName":"Chris"}}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06f94825ddae1f53b621f7") }
> db.workingOfIndexesDemo.insertOne({"Information":{"StudentDetails":{"StudentName":"David"}}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06f94f25ddae1f53b621f8") }
> db.workingOfIndexesDemo.insertOne({"Information":{"StudentDetails":{"StudentName":"Mike"}}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06f95325ddae1f53b621f9") }

সব ডকুমেন্ট দেখানো

> db.workingOfIndexesDemo.find();

আউটপুট:

{ "_id" : ObjectId("5e06f94825ddae1f53b621f7"), "Information" : { "StudentDetails" : { "StudentName" : "Chris" } } }
{ "_id" : ObjectId("5e06f94f25ddae1f53b621f8"), "Information" : { "StudentDetails" : { "StudentName" : "David" } } }
{ "_id" : ObjectId("5e06f95325ddae1f53b621f9"), "Information" : { "StudentDetails" : { "StudentName" : "Mike" } } }

explain() দিয়ে কোয়েরি প্ল্যান দেখা

> db.workingOfIndexesDemo.find({"Information.StudentDetails": { $elemMatch: { "StudentName" : "David"} } }).explain();

আউটপুটের প্রাসঙ্গিক অংশ (winningPlan):

"winningPlan" : {
    "stage" : "FETCH",
    "filter" : { "Information.StudentDetails" : { "$elemMatch" : { "StudentName" : { "$eq" : "David" } } } },
    "inputStage" : {
        "stage" : "IXSCAN",
        "keyPattern" : { "Information.StudentDetails.StudentName" : 1 },
        "indexName" : "Information.StudentDetails.StudentName_1",
        "isMultiKey" : false,
        "isSparse" : true,
        "indexBounds" : { "Information.StudentDetails.StudentName" : [ "[\"David\", \"David\"]" ] }
    }
}

বিশ্লেষণ: `stage: "IXSCAN"` দেখাচ্ছে যে ইন্ডেক্স ব্যবহার হয়েছে। `filter` স্টেজে `$elemMatch` আছে, অর্থাৎ ইন্ডেক্স ক্যান্ডিডেট খুঁজে বের করলেও ফাইনাল ফিল্টারে `$elemMatch` লজিক প্রয়োগ হয়েছে। স্পার্স ইন্ডেক্স (`isSparse: true`) নাল ভ্যালু বাদ দিয়ে কাজ করে।

  1. অবichteten আইফোন মাইক্রোফোন ফিক্স করুন: কুইক ট্রাবলশুটিং স্টেপস

  2. আপনার আইফোন ফ্ল্যাশলাইট ফিক্স করুন: ৯টি দ্রুত সমাধান

  3. PS4 কন্ট্রোলার পিসিতে সংযোগ করলে অডিও সমস্যা সমাধান

  4. উইন্ডোজ ফিডব্যাক হাব ফিক্স: কুইক এবং নির্ভরযোগ্য ট্রাবলশুটিং স্টেপস