So erstellen Sie einen eindeutigen Index in MongoDB

So Erstellen Sie Einen Eindeutigen Index In Mongodb



In MongoDB stellt ein eindeutiger Index sicher, dass jeder Wert in einem bestimmten Feld oder einer Gruppe von Feldern innerhalb einer Sammlung eindeutig ist. Mit der Methode createIndex() können wir ein eindeutiges Indexfeld für die spezifische Sammlung erstellen. Um die Datenintegrität aufrechtzuerhalten und doppelte Einträge in wichtigen Feldern zu vermeiden, sind eindeutige Indizes hilfreich. Der Artikel behandelte die Möglichkeiten, einen eindeutigen Index für die spezifische Sammlung zu erstellen. db.candidates.insertMany([

{ Name: „Alexa Bill“ , Grad: 'A' , Kurs: 'Python' },

{ Name: „Jane Marks“ , Grad: 'B' , Kurs: 'Java' },

{ Name: „Paul Ken“ , Grad: 'C' , Kurs: 'C#' },

{ Name: „Emily Jeo“ , Grad: 'D' , Kurs: „php“ }

]);

Wir können auch ein eindeutiges Indexfeld erstellen, wenn die Sammlung vorhanden ist und einige Dokumente darin enthalten sind. Dazu fügen wir das Dokument in die neue Sammlung „Kandidaten“ ein, deren Einfügungsabfrage wie folgt lautet:







Beispiel 1: Erstellen Sie einen eindeutigen Index eines einzelnen Felds

Wir können den Index mit der Methode „createIndex()“ erstellen und dieses Feld eindeutig machen, indem wir die Option „unique“ mit dem booleschen Wert „true“ angeben.



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

Hier initiieren wir die Methode createIndex() für die Sammlung „candidates“, um einen eindeutigen Index eines bestimmten Felds zu erstellen. Anschließend versorgen wir das Feld „Grade“ mit dem Wert „1“ für die Indexspezifikation. Der Wert „1“ stellt hier den aufsteigenden Index der Sammlung dar. Als nächstes geben wir die Option „unique“ mit dem Wert „true“ an, um die Eindeutigkeit des Feldes „note“ zu erzwingen.



Die Ausgabe stellt dar, dass der eindeutige Index für das Feld „Note“ für die Sammlung „Kandidaten“ erstellt wird:





Beispiel 2: Erstellen Sie einen eindeutigen Index für mehr als ein Feld

Im vorherigen Beispiel wird nur ein einzelnes Feld als eindeutiger Index erstellt. Mit der Methode createIndex() können wir aber auch zwei Felder gleichzeitig als eindeutigen Index erstellen.



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

Hier rufen wir die Methode createIndex() für dieselbe „Kandidaten“-Sammlung auf. Wir geben der Methode createIndex() zwei Felder an – „note“ und „course“ – mit dem Wert „1“ als ersten Ausdruck. Anschließend legen wir die Option „unique“ mit dem Wert „true“ fest, um diese beiden eindeutigen Felder zu erstellen.

Die Ausgabe stellt zwei eindeutige Indizes dar, „grade_1“ und „course_1“, für die folgende „candidates“-Sammlung:

Beispiel 3: Erstellen Sie einen zusammengesetzten eindeutigen Index der Felder

Wir können jedoch auch gleichzeitig einen eindeutigen zusammengesetzten Index innerhalb derselben Sammlung erstellen. Dies erreichen wir durch die folgende Abfrage:

db.candidates.createIndex( { name: 1 , Grad: 1 , Kurs: 1 }, { unique: true }

Wir verwenden erneut die Methode createIndex(), um den zusammengesetzten eindeutigen Index für die Sammlung „Kandidaten“ zu erstellen. Dieses Mal übergeben wir drei Felder – „Note“, „Name“ und „Kurs“ – die als aufsteigende Indexfelder für die Sammlung „Kandidaten“ dienen. Als nächstes rufen wir die Option „unique“ auf, um das Feld eindeutig zu machen, da dieser Option „true“ zugewiesen wird.

Die Ausgabe zeigt die Ergebnisse an, die zeigen, dass alle drei Felder jetzt der eindeutige Index der angegebenen Sammlung sind:

Beispiel 4: Erstellen Sie einen eindeutigen Index doppelter Feldwerte

Jetzt versuchen wir, den eindeutigen Index für den doppelten Feldwert zu erstellen, der einen Fehler auslöst, um die Eindeutigkeitsbeschränkung aufrechtzuerhalten.

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

Hier wenden wir die eindeutigen Indexkriterien für das Feld an, das ähnliche Werte enthält. Innerhalb der Methode createIndex() rufen wir das Feld „name“ mit dem Wert „1“ auf, um es zu einem eindeutigen Index zu machen und definieren die eindeutige Option mit dem Wert „true“. Da die beiden Dokumente das Feld „Name“ mit identischen Werten haben, können wir dieses Feld nicht zu einem eindeutigen Index der Sammlung „Kandidaten“ machen. Der Fehler wegen doppeltem Schlüssel wird bei der Ausführung der Abfrage ausgelöst.

Wie erwartet generiert die Ausgabe die Ergebnisse, da das Namensfeld dieselben Werte für zwei verschiedene Dokumente aufweist:

Daher aktualisieren wir die „Kandidaten“-Sammlung, indem wir jedem „Name“-Feld im Dokument einen eindeutigen Wert zuweisen und dann das „Name“-Feld als eindeutigen Index erstellen. Durch die Ausführung dieser Abfrage wird im Allgemeinen das Feld „Name“ als eindeutiger Index erstellt, wie im Folgenden gezeigt:

Beispiel 5: Erstellen Sie einen eindeutigen Index eines fehlenden Felds

Alternativ wenden wir die Methode createIndex() auf das Feld an, das in keinem der Dokumente der Sammlung vorhanden ist. Infolgedessen speichert der Index einen Nullwert für dieses Feld und der Vorgang schlägt aufgrund einer Verletzung des Feldwerts fehl.

db.candidates.createIndex( { E-Mail: 1 }, { unique: true } )

Hier verwenden wir die Methode createIndex(), bei der das Feld „E-Mail“ mit dem Wert „1“ versehen wird. Das Feld „E-Mail“ ist in der Sammlung „Kandidaten“ nicht vorhanden und wir versuchen, es zu einem eindeutigen Index für die Sammlung „Kandidaten“ zu machen, indem wir die eindeutige Option auf „true“ setzen.

Wenn die Abfrage hierzu ausgeführt wird, erhalten wir in der Ausgabe den Fehler, dass das Feld „E-Mail“ in der Sammlung „Kandidaten“ fehlt:

Beispiel 6: Erstellen Sie einen eindeutigen Index eines Feldes mit einer Sparse-Option

Als nächstes kann der eindeutige Index auch mit der Sparse-Option erstellt werden. Die Funktionalität eines Sparse-Index besteht darin, dass er nur Dokumente umfasst, die über das indizierte Feld verfügen, und nicht die Dokumente, die nicht über das indizierte Feld verfügen. Wir haben die folgende Struktur bereitgestellt, um die Sparse-Option einzurichten:

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

{ Name: „unique_sparse_course_index“ , eindeutig: wahr, spärlich: wahr } )

Hier stellen wir die Methode createIndex() bereit, bei der das Feld „Kurs“ auf den Wert „1“ gesetzt wird. Danach geben wir die zusätzliche Option an, ein eindeutiges Indexfeld festzulegen, nämlich „Kurs“. Zu den Optionen gehört der „Name“, der den Index „unique_sparse_course_index“ festlegt. Dann haben wir die Option „unique“, die mit dem Wert „true“ angegeben wird, und die Option „sparse“ wird ebenfalls auf „true“ gesetzt.

Die Ausgabe erstellt einen eindeutigen und spärlichen Index für das Feld „Kurs“, wie im Folgenden dargestellt:

Beispiel 7: Zeigen Sie den erstellten eindeutigen Index mit der Methode GetIndexes() an

Im vorherigen Beispiel wurde nur ein eindeutiger Index für die bereitgestellte Sammlung erstellt. Um Informationen zu den eindeutigen Indizes für die Sammlung „Kandidaten“ anzuzeigen und abzurufen, verwenden wir die folgende getIndexes()-Methode:

db.candidates.getIndexes();

Hier rufen wir die Funktion getIndexes() für die Sammlung „candidates“ auf. Die Funktion getIndexes() gibt alle Indexfelder für die Sammlung „candidates“ zurück, die wir in den vorherigen Beispielen erstellt haben.

Die Ausgabe zeigt den eindeutigen Index an, den wir für die Sammlung erstellt haben: entweder einen eindeutigen Index, einen zusammengesetzten Index oder den eindeutigen Sparse-Index:

Abschluss

Wir haben versucht, einen eindeutigen Index für die spezifischen Felder der Sammlung zu erstellen. Wir haben die verschiedenen Möglichkeiten untersucht, einen eindeutigen Index für ein einzelnes Feld und mehrere Felder zu erstellen. Wir haben auch versucht, einen eindeutigen Index zu erstellen, bei dem der Vorgang aufgrund einer Verletzung der eindeutigen Einschränkung fehlschlägt.