MongoDB-এ স্পার্স ইউনিক ইন্ডেক্স তৈরি করা
MongoDB-এ একটি ইউনিক ইন্ডেক্সকে স্পার্স ইউনিক ইন্ডেক্সে রূপান্তর করার জন্য sparse: true অপশন ব্যবহার করতে হয়। স্পার্স ইন্ডেক্স শুধুমাত্র उन्हीं ডকুমেন্টগুলিকে ইন্ডেক্স করে যেখানে নির্দিষ্ট ফিল্ডটি বিদ্যমান থাকে, যাতে null মানवाले ডকুমেন্টগুলো ইন্ডেক্সে যোগ না হয়।
সাধারণ ইউনিক ইন্ডেক্স তৈরি
> db.demo229.ensureIndex({"ClientName":1}, {unique: true});
{
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
ইন্ডেক্সগুলো দেখানো
> db.demo229.getIndexes();
আউটপুট:
[
{
"v" : 2,
"key" : { "_id" : 1 },
"name" : "_id_",
"ns" : "test.demo229"
},
{
"v" : 2,
"unique" : true,
"key" : { "ClientName" : 1 },
"name" : "ClientName_1",
"ns" : "test.demo229"
}
]
ইন্ডেক্স ড্রপ করে স্পার্স ইউনিক ইন্ডেক্স তৈরি
> db.demo229.dropIndex("ClientName_1");
{ "nIndexesWas" : 2, "ok" : 1 }
> db.demo229.ensureIndex({"ClientName":1}, {unique: true, sparse:true});
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
পরিবর্তিত ইন্ডেক্স যাচাই
> db.demo229.getIndexes();
আউটপুট (লক্ষ্য করুন "sparse" : true):
[
{
"v" : 2,
"key" : { "_id" : 1 },
"name" : "_id_",
"ns" : "test.demo229"
},
{
"v" : 2,
"unique" : true,
"key" : { "ClientName" : 1 },
"name" : "ClientName_1",
"ns" : "test.demo229",
"sparse" : true
}
]
মূল পার্থক্য
- সাধারণ ইউনিক ইন্ডেক্স: সব ডকুমেন্টে ফিল্ড থাকা বাধ্যতামূলক, null মানও ইউনিক কনস্ট্রেইন্টের অধীনে পড়ে
- স্পার্স ইউনিক ইন্ডেক্স: শুধু ফিল্ড থাকা ডকুমেন্টগুলোই ইন্ডেক্স হয়, null মানवाले ডকুমেন্টগুলো ইগনোর করা হয়
নোট: MongoDB 3.0+ সংস্করণে ensureIndex() ডিপ্রিকেটেড, বদলে createIndex() ব্যবহার করুন।