Jak vytvořit jedinečný index v MongoDB

Jak Vytvorit Jedinecny Index V Mongodb



V MongoDB jedinečný index zajišťuje, že každá hodnota v určitém poli nebo skupině polí uvnitř kolekce je jedinečná. Pomocí metody createIndex() můžeme vytvořit jedinečné pole indexu pro konkrétní kolekci. Pro účely zachování integrity dat a zamezení duplicitních záznamů v důležitých polích jsou užitečné jedinečné indexy. Článek se zabýval způsoby, jak vytvořit jedinečný index pro konkrétní kolekci. db.candidates.insertMany([

{ název: 'Alexa Bill' , školní známka: 'A' , chod: 'krajta' },

{ název: 'Jane Marks' , školní známka: 'B' , chod: 'Jáva' },

{ název: 'Paul Ken' , školní známka: 'C' , chod: 'C#' },

{ název: 'Emily Jeo' , školní známka: 'D' , chod: 'php' }

]);

Můžeme také vytvořit jedinečné pole indexu, když je kolekce přítomna s některými dokumenty uvnitř. Za tímto účelem vložíme dokument do nové kolekce, což je „kandidáti“, jejichž dotaz na vložení je dán takto:







Příklad 1: Vytvořte jedinečný index jednoho pole

Index můžeme vytvořit pomocí metody createIndex() a toto pole můžeme učinit jedinečným zadáním jedinečné možnosti s booleovským „true“.



db.candidates.createIndex( { stupeň: 1 }, { unique: true } )

Zde iniciujeme metodu createIndex() na kolekci „kandidátů“, abychom vytvořili jedinečný index konkrétního pole. Poté poskytneme pole „známka“ s hodnotou „1“ pro specifikaci indexu. Hodnota „1“ zde představuje vzestupný index kolekce. Dále specifikujeme možnost „unique“ s hodnotou „true“, abychom vynutili jedinečnost pole „grade“.



Výstup představuje, že jedinečný index v poli „známka“ je vytvořen pro kolekci „kandidátů“:





Příklad 2: Vytvořte jedinečný index více než jednoho pole

V předchozím příkladu je vytvořeno pouze jedno pole jako jedinečný index. Ale můžeme také vytvořit dvě pole jako jedinečný index současně pomocí metody createIndex().



db.candidates.createIndex( { stupeň: 1 , chod: 1 }, { unique: true } )

Zde voláme metodu createIndex() na stejné kolekci „kandidátů“. Metodě createIndex() zadáme dvě pole – „grade“ a „course“ – s hodnotou „1“ jako prvním výrazem. Poté nastavíme jedinečnou možnost s hodnotou „true“, abychom vytvořili tato dvě jedinečná pole.

Výstup představuje dva jedinečné indexy, „grade_1“ a „course_1“, pro následující kolekci „kandidátů“:

Příklad 3: Vytvořte složený jedinečný index polí

Můžeme však také vytvořit jedinečný složený index v rámci stejné kolekce současně. Toho dosáhneme pomocí následujícího dotazu:

db.candidates.createIndex( { název: 1 , školní známka: 1 , chod: 1 }, { unique: true }

K vytvoření složeného jedinečného indexu pro kolekci „kandidátů“ opět použijeme metodu createIndex(). Tentokrát předáme tři pole – „třída“, „jméno“ a „kurz“ – která fungují jako pole vzestupného indexu pro kolekci „kandidátů“. Dále nazýváme možnost „unikátní“, aby bylo pole jedinečné, protože k této možnosti je přiřazeno „pravda“.

Výstup zobrazí výsledky, které ukazují, že všechna tři pole jsou nyní jedinečným indexem zadané kolekce:

Příklad 4: Vytvořte jedinečný index duplicitních hodnot polí

Nyní se pokusíme vytvořit jedinečný index pro duplicitní hodnotu pole, který spustí chybu, aby se zachovalo omezení jedinečnosti.

db.candidates.createIndex({jméno: 1 },{unique:true})

Zde použijeme kritéria jedinečného indexu pro pole, které obsahuje podobné hodnoty. Uvnitř metody createIndex() voláme pole „name“ s hodnotou „1“, abychom z něj udělali jedinečný index a definujeme jedinečnou možnost s hodnotou „true“. Vzhledem k tomu, že tyto dva dokumenty mají pole „name“ s identickými hodnotami, nemůžeme z tohoto pole vytvořit jedinečný index kolekce „kandidátů“. Chyba duplicitního klíče se spustí po provedení dotazu.

Podle očekávání výstup generuje výsledky, protože pole názvu má stejné hodnoty pro dva různé dokumenty:

Aktualizujeme tedy kolekci „kandidátů“ tím, že každému poli „name“ v dokumentu přiřadíme jedinečnou hodnotu a poté vytvoříme pole „name“ jako jedinečný index. Provedením tohoto dotazu se obecně vytvoří pole „name“ jako jedinečný index, jak je znázorněno v následujícím:

Příklad 5: Vytvořte jedinečný index chybějícího pole

Alternativně použijeme metodu createIndex() na pole, které neexistuje v žádném z dokumentů kolekce. Výsledkem je, že index u tohoto pole ukládá hodnotu null a operace se nezdaří kvůli porušení hodnoty pole.

db.candidates.createIndex( { email: 1 }, { unique: true } )

Zde používáme metodu createIndex(), kde je pole „e-mail“ opatřeno hodnotou „1“. Pole „e-mail“ v ​​kolekci „kandidátů“ neexistuje a snažíme se z něj udělat jedinečný index pro kolekci „kandidáti“ nastavením jedinečné možnosti na „true“.

Když je dotaz na toto proveden, dostaneme chybu ve výstupu, protože pole „e-mail“ chybí v kolekci „kandidátů“:

Příklad 6: Vytvořte jedinečný index pole s možností Sparse

Dále lze jedinečný index vytvořit také pomocí volby sparse. Funkce řídkého indexu spočívá v tom, že zahrnuje pouze dokumenty, které mají indexované pole, s výjimkou dokumentů, které indexované pole nemají. Pro nastavení řídké možnosti jsme poskytli následující strukturu:

db.candidates.createIndex( { kurz : 1 },

{ název: 'unique_sparse_course_index' , jedinečný: true, sparse: true } )

Zde poskytujeme metodu createIndex(), kde je pole „kurz“ nastaveno na hodnotu „1“. Poté specifikujeme další možnost nastavení jedinečného indexového pole, které je „kurz“. Možnosti zahrnují „name“, které nastavuje index „unique_sparse_course_index“. Pak máme možnost „unikátní“, která je specifikována hodnotou „true“ a možnost „sparse“ je také nastavena na „true“.

Výstup vytvoří jedinečný a řídký index v poli „kurz“, jak je znázorněno níže:

Příklad 7: Ukažte vytvořený jedinečný index pomocí metody GetIndexes().

V předchozím příkladu byl pro poskytnutou kolekci vytvořen pouze jedinečný index. K zobrazení a získání informací o jedinečných indexech pro kolekci „kandidátů“ používáme následující metodu getIndexes():

db.candidates.getIndexes();

Zde voláme funkci getIndexes() na kolekci „kandidátů“. Funkce getIndexes() vrací všechna pole indexu pro kolekci „kandidátů“, kterou jsme vytvořili v předchozích příkladech.

Výstup zobrazuje jedinečný index, který jsme pro kolekci vytvořili: buď jedinečný index, složený index, nebo jedinečný řídký index:

Závěr

Pokusili jsme se vytvořit jedinečný index pro konkrétní pole kolekce. Prozkoumali jsme různé způsoby, jak vytvořit jedinečný index pro jedno pole a více polí. Také jsme se pokusili vytvořit jedinečný index, kde operace selže kvůli jedinečnému porušení omezení.