MongoDB में स्पार्स यूनिक इंडेक्स बनाना
MongoDB में स्पार्स इंडेक्स बनाने के लिए sparse: true विकल्प का उपयोग किया जाता है। स्पार्स इंडेक्स केवल उन्हीं दस्तावेज़ों को इंडेक्स करता है जिनमें इंडेक्स किया गया फ़ील्ड मौजूद होता है, जिससे स्टोरेज बचता है और परफॉर्मेंस बेहतर होती है।
सामान्य यूनिक इंडेक्स बनाना
> 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
}
]
महत्वपूर्ण बिंदु
ensureIndexअब deprecated है, नए वर्जन मेंcreateIndexउपयोग करें- स्पार्स इंडेक्स उन फ़ील्ड्स के लिए उपयोगी है जो सभी दस्तावेज़ों में मौजूद नहीं होते
- यूनिक + स्पार्स कॉम्बिनेशन डुप्लिकेट वैल्यूज़ को रोकता है लेकिन मिसिंग फ़ील्ड्स को अनुमति देता है