MongoDB-এ এম্বেডেড ডকুমেন্টের ফিল্ডে ইন্ডেক্স তৈরি এবং কোয়েরি পারফরম্যান্স
MongoDB-এ নেস্টেড (Embedded) ডকুমেন্টের ফিল্ডে ইন্ডেক্স তৈরি করতে ডট (.) নোটেশন ব্যবহার করা হয়। এটি কোয়েরি পারফরম্যান্স নाटকিয়ভাবে বেড়ায়।
১. কালেকশন, ডেটা এবং ইন্ডেক্স তৈরি
> db.demo323.insertOne({"details":{"Name":"Chris","Age":34}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e51157af8647eb59e56206e") }
> db.demo323.insertOne({"details":{"Name":"David","Age":31}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e511581f8647eb59e56206f") }
> db.demo323.insertOne({"details":{"Name":"Bob","Age":28}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e511589f8647eb59e562070") }
> db.demo323.ensureIndex({"details.Name": 1});
{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 2, "numIndexesAfter" : 3, "ok" : 1 }
ব্যাখ্যা: details.Name ডট নোটেশন দিয়ে নেস্টেড ফিল্ডে ইন্ডেক্স তৈরি করা হয়েছে।
২. সব ডকুমেন্ট দেখানো
> db.demo323.find();
আউটপুট:
{ "_id" : ObjectId("5e51157af8647eb59e56206e"), "details" : { "Name" : "Chris", "Age" : 34 } }
{ "_id" : ObjectId("5e511581f8647eb59e56206f"), "details" : { "Name" : "David", "Age" : 31 } }
{ "_id" : ObjectId("5e511589f8647eb59e562070"), "details" : { "Name" : "Bob", "Age" : 28 } }
৩. ইন্ডেক্সড ফিল্ড দিয়ে কোয়েরি (Name: "Bob")
> db.demo323.find({"details.Name": "Bob"});
৪. ফলাফল
{ "_id" : ObjectId("5e511589f8647eb59e562070"), "details" : { "Name" : "Bob", "Age" : 28 } }
পারফরম্যান্স: ইন্ডেক্স থাকায় MongoDB IXSCAN ব্যবহার করে সরাসরি ডকুমেন্ট খুঁজে পায়, পুরো কালেকশন স্ক্যান (COLLSCAN) করতে হয় না। বড় ডেটাসেটে এটি অত্যন্ত গুরুত্বপূর্ণ।