MongoDB-এ ইউনিক ইন্ডেক্সে null মান ইন্ডেক্স হয় (Single Null Allowed)
MongoDB-এ ইউনিক ইন্ডেক্স তৈরি করলে null মানও ইন্ডেক্স হয়। তবে ইউনিক কনস্ট্রেইন্টের কারণে শুধু একটি ডকুমেন্টে সেটি ফিল্ড অনুপস্থিত বা null থাকতে পারে। দ্বিতীয় null ইনসার্ট করলে ডুপ্লিকেট কি এরর দেবে।
উদাহরণ: ইউনিক ইন্ডেক্স তৈরি ও ডেটা ইনসার্ট
> db.demo170.createIndex({"Value":1},{unique:true});
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
> db.demo170.insert({"Value":100});
WriteResult({ "nInserted" : 1 })
> db.demo170.insert({"Value":null});
WriteResult({ "nInserted" : 1 })
> db.demo170.insert({"Value":90});
WriteResult({ "nInserted" : 1 })
> db.demo170.insert({"Value":78});
WriteResult({ "nInserted" : 1 })
সব ডকুমেন্ট দেখানো
> db.demo170.find();
আউটপুট:
{ "_id" : ObjectId("5e369b789e4f06af551997da"), "Value" : 100 }
{ "_id" : ObjectId("5e369b7c9e4f06af551997db"), "Value" : null }
{ "_id" : ObjectId("5e369b809e4f06af551997dc"), "Value" : 90 }
{ "_id" : ObjectId("5e369b969e4f06af551997dd"), "Value" : 78 }
সর্টেড আউটপুট (null প্রথমে আসে)
> db.demo170.find().sort({Value:1});
আউটপুট:
{ "_id" : ObjectId("5e369b7c9e4f06af551997db"), "Value" : null }
{ "_id" : ObjectId("5e369b969e4f06af551997dd"), "Value" : 78 }
{ "_id" : ObjectId("5e369b809e4f06af551997dc"), "Value" : 90 }
{ "_id" : ObjectId("5e369b789e4f06af551997da"), "Value" : 100 }
ব্যাখ্যা
createIndex({"Value":1},{unique:true})— Value ফিল্ডে ইউনিক অ্যাসেন্ডিং ইন্ডেক্স।nullমানটি ইন্ডেক্স হয়েছে এবং সর্টে সবচেয়ে আগে আসে (BSON অর্ডার: null < numbers < strings < objects...)。- দ্বিতীয় ডকুমেন্টে
{"Value":null}ইনসার্ট করলেE11000 duplicate key errorদেবে। - Partial Index (MongoDB 3.2+):
{partialFilterExpression: {Value: {$ne: null}}}দিয়ে null মানগুলো ইন্ডেক্স থেকে বাদ দেওয়া যায়, তাহলে একাধিক null আলাউড।