MongoDB-Dokumentation - Erweiterte Verwendung - MongoDB-Index - createindex () und dropindex () - Verwenden Sie zum Suchen reguläre Ausdrücke in MongoDB

 Adam:

        Ich habe bereits zuvor das grundlegende Hinzufügen, Löschen, Ändern und Abfragen von MongoDB studiert. Es reicht definitiv nicht aus, die Basisdatenbank der Gesellschaft hinzuzufügen, zu löschen, zu ändern und zu überprüfen. Dieses Mal geht es um die Effizienz der Datenbanksuche. Die Sucheffizienz von Daten muss verbessert werden.

MongoDB-Index

        Wenn in der Datenbank kein Datenindex vorhanden ist. Wenn Sie einige Daten finden müssen. Scannt aktiv alle möglichen Sammlungen. Mit der Einführung des Indexkonzepts kann der Index effizient genutzt werden, um die Anzahl der Dokumente zu begrenzen, die in der Sammlung durchsucht werden müssen.

        Indexkonzept:

        Indizes sind spezielle Datensätze, die einen Teil der Daten einer Sammlung speichern. Da Daten Teildaten sind. Dadurch wird das Lesen dieser Daten einfacher. Dieser Teilsatz speichert den Wert eines bestimmten Feldes oder einer Reihe von Feldern, sortiert nach Feldwert.

Auswirkung auf den Index:

  • So erstellen Sie einen Index: createIndex()
  • So finden Sie Indizes: getindexes()
  • So löschen Sie einen Index: dropindex()

Die Auswirkungen der Indizierung

        Aus der obigen Einführung können wir ersehen, dass der Index zwar sehr datenbankfreundlich und auch sehr leistungssteigernd ist, aber zu viele Indizes andere Vorgänge reduzieren. Zum Beispiel Einfügen, Löschen und andere Aktualisierungsvorgänge. Im Gegenteil, der Gewinn überwiegt den Verlust.

        Wenn das Kontoauszugsdokument häufig Lösch- und andere Aktualisierungsvorgänge durchführt, sind auch diese Felder des Index betroffen. Dann müssen diese Indizes korrigiert und korrigiert werden.

        Das heißt, dieses Buch ist sehr abfragefreundlich. Wenn jedoch der Wert des Indexfelds geändert werden muss, müssen die beiden Inhaltsstufen von MongoDB geändert werden.

        Daher ist es bei der Auswahl von Indizes erforderlich, Felder auszuwählen, die nicht häufig aktualisiert werden, und relativ wichtige Felder als Indizes.

 

Wie in Abbildung gezeigt;

        ID und Code sind Datenfelder, die sich nicht häufig ändern. Daher können diese beiden Felder als Indizes festgelegt werden. Um unsere Suche zu erleichtern.

So erstellen Sie einen Index: createIndex()

Erstellen Sie in MongoDB mit der Methode createindex

Ich habe zuerst die folgende Anweisung verwendet, um eine BeispielDB-Sammlung zu erstellen, und dann 3 Dokumente in dieser Sammlung gespeichert.

var Example = [
	{
		"_id":2,
		"adncode":1,
		"员工姓名":"帅丹"
	},
	{
		"_id":3,
		"adncode":2,
		"员工姓名":"大力丹"
	},
	{
		"_id":4,
		"adncode":1,
		"员工姓名":"库库丹"
	}
]
db.ExampleDB.insert(Example)

 Im Format dieses Dokuments können wir „_id“ und „adncode“ als Indizes verwenden.

Als nächstes verwenden wir die Methode „createindex“, um einen Index zu erstellen

#创建索引
db.ExampleDB.createIndex({adncode:1})

Code-Erklärung:

       Diese Anweisung wird verwendet, um einen Index in der BeispielDB-Datenbank zu erstellen. Der Name des Index lautet adncode und die Indexspalte ist die erste Spalte.

        Insbesondere db.ExampleDB.createIndex({adncode:1}) wird ein Index für die Spalte „adncode“ in der Datenbank „ExampleDB“ erstellt, wobei „adncode“ der Name des Index ist und 1 angibt, dass es sich bei der Spalte um die erste Spalte handelt. Durch die Erstellung eines Index können Sie die Effizienz der Abfrage der Daten in der Spalte „adncode“ verbessern.

        Der Parameter „1“ bedeutet, dass beim Erstellen eines Index mit dem adncodeFeldwert „ “ dieser in aufsteigender Reihenfolge sortiert werden soll. Beachten Sie, dass sich dies vom _id-Feld unterscheidet (das ID-Feld wird zur eindeutigen Identifizierung jedes Dokuments in der Sammlung verwendet), das von MongoDB automatisch in der Sammlung erstellt wird. Dokumente werden jetzt adncodestattdessen nach dem Feld _id sortiert.

        Ein Parameter von 1 bedeutet aufsteigende Sortierung, während ein Parameter von -1 umgekehrte Sortierung bedeutet. In MongoDB kann die Richtung eines Index unidirektional (1 oder -1) oder bidirektional ({-1,1} oder {1,-1}) sein, was eine Richtung von links nach rechts oder von rechts nach anzeigt -linke Reihenfolge bzw. Beim Erstellen eines Index können Sie die entsprechende Richtung und Spalten auswählen, um den Index entsprechend den tatsächlichen Anforderungen zu erstellen und so einen schnelleren Dateizugriff und eine schnellere Abfrageleistung zu ermöglichen. Kurz gesagt, die Richtung und die Parameter des Index können entsprechend den spezifischen Anforderungen ausgewählt und angepasst werden, um die beste Leistung und den besten Abfrageeffekt zu erzielen.

 Erstellen Sie eine Erklärung für eine erfolgreiche Rückgabeerklärung:

  1. numIndexesBefore: 1 gibt die Anzahl der Feldwerte (tatsächliche Felder in der Sammlung) an, die im Index vorhanden sind, bevor der Befehl ausgeführt wird. Denken Sie daran, dass jede Sammlung über ein _id-Feld verfügt, das auch als Feldwert des Index gilt. Da das Indexfeld _id Teil der Sammlung war, als sie ursprünglich erstellt wurde, ist der Wert von numIndexesBefore 1.
  2. numIndexesAfter: 2 gibt die Anzahl der Feldwerte an, die nach Ausführung des Befehls im Index vorhanden sind.
  3. Die Ausgabe „ok:1“ gibt hier an, dass der Vorgang erfolgreich war und der neue Index der Sammlung hinzugefügt wurde.

Der obige Code zeigt, wie ein Index basierend auf einem Feldwert erstellt wird. Es ist jedoch auch möglich, einen Index basierend auf mehreren Feldwerten zu erstellen.

 Erstellen Sie eine Parametererklärung für die Indexanweisung

db.ExampleDB.createIndex(keys, options)ist die Anweisung, die zum Erstellen eines Index in MongoDB verwendet wird. Der keysParameter gibt den Schlüssel zum Erstellen des Index an. Dabei kann es sich um ein Schlüsseldokument (z. B. {adncode: 1}) oder ein Array mit mehreren Schlüsseln (z. B. [adncode, code2]) handeln. optionsParameter werden verwendet, um die Optionen und das Verhalten des Index anzugeben, bei dem es sich um ein Dokument handelt, das mehrere Optionen enthält.

Hier sind einige häufig verwendete Optionen und ihre Funktion:

  1. background: Gibt an, ob der Index im Hintergrund erstellt wird, sodass andere Vorgänge während der Indexerstellung fortgesetzt werden können. Standardmäßig werden Indizes im Vordergrund erstellt, was bedeutet, dass andere Vorgänge blockiert sind.
  2. unique: Gibt an, ob der Index eindeutig ist. Wenn es auf „true“ gesetzt ist, sind doppelte Indexschlüsselwerte im Dokument nicht zulässig.
  3. dropDups: Ob beim Erstellen des Index doppelte Dokumente entfernt werden sollen. Wenn der Wert auf „true“ gesetzt ist, werden alle doppelten Dokumente entfernt, wenn der Index erstellt wird.
  4. name: Der Name des Index, der zur Identifizierung und Referenzierung des Index verwendet wird.
  5. expireAfterSeconds: Geben Sie die Zeit in Sekunden an, zu der das Dokument abläuft. Bei einer positiven Zahl werden Dokumente nach dieser Zeit gelöscht.

Bei Verwendung dieser Anweisung lautet die grundlegende Syntax:

db.collection.createIndex(keys, options)

Unter anderem keyskann der Parameter je nach Bedarf als Schlüsseldokument oder als Array mit mehreren Schlüsseln festgelegt werden. optionsDer Parameter ist optional und kann auf ein Dokument gesetzt werden, das nach Wunsch Optionen enthält.

Es ist zu beachten, dass beim Erstellen eines Index der geeignete Typ und die entsprechenden Parameter entsprechend den tatsächlichen Anforderungen und Leistungsanforderungen ausgewählt werden sollten. Die Erstellung von Indizes erhöht den Speicherplatz und den Rechenaufwand und wirkt sich auch auf die Änderung von Dokumenten aus. Daher sollten die Notwendigkeit und die Auswirkungen der Indexierung sorgfältig bewertet und geeignete Optionen und Parameter ausgewählt werden.

Erstellen Sie mehrere Feldindizes gleichzeitig

db.Employee.createIndex({Employeeid:1, EmployeeName:1])

Code-Erklärung:

        Die Methode createIndex berücksichtigt nun mehrere Feldwerte, wodurch nun ein Index basierend auf „Employeeid“ und „EmployeeName“ erstellt wird. Employeeid: 1 und EmployeeName: 1 geben an, dass ein Index für diese beiden Feldwerte erstellt werden soll, während :1 angibt, dass der Index in aufsteigender Reihenfolge sein soll.

So finden Sie Indizes: Verwenden der Methode getindexes()

#查找索引
db.ExampleDB.getIndexes()

 Code-Erklärung:

  1. Die Methode getIndexes wird verwendet, um alle Indizes in der Sammlung zu finden.
  2. Die Ausgabe gibt ein Dokument zurück, das lediglich zeigt, dass die Sammlung zwei Indizes enthält, das Feld „_id“ und das andere Feld „Mitarbeiter-ID“. :1 bedeutet, dass die Feldwerte im Index in aufsteigender Reihenfolge erstellt werden.

So löschen Sie einen Index: dropindex()

Löschen Sie einen Index in MongoDB mithilfe der dropindex-Methode


#删除索引
db.ExampleDB.dropIndex({adncode:1})

Code-Erklärung:

  1. Die dropIndex-Methode übernimmt einen erforderlichen Feldwert, der aus dem Index gelöscht werden muss.
  2. Der zurückgegebene Ergebniswert nIndexesWas: 2 gibt die Anzahl der Feldwerte an, die vor der Ausführung des Befehls im Index vorhanden waren. Denken Sie daran, dass jede Sammlung über ein _id-Feld verfügt, das auch als Feldwert des Index gilt.
  3. Die Ausgabe ok:1 gibt an, dass der Vorgang erfolgreich war und das Feld „adncode“ aus dem Index entfernt wurde.
  4. Um alle Indizes in einer Sammlung auf einmal zu löschen, können Sie den Befehl dropIndexes verwenden.

Alle Indizes löschen

db.ExampleDB.dropIndexes()

Code-Erklärung

  1. Die dropIndexes-Methode löscht alle Indizes außer dem _id-Index.

Kleine Zusammenfassung:

  • Das Definieren von Indizes ist wichtig für eine schnelle und effiziente Suche nach Dokumenten in einer Sammlung.
  • Indizes können mit der Methode createIndex erstellt werden. Ein Index kann für nur ein Feld oder für mehrere Feldwerte erstellt werden.
  • Indizes können mit der Methode getIndexes gefunden werden.
  • Indizes können gelöscht werden, indem dropIndex für einen einzelnen Index oder dropIndex zum Löschen aller Indizes verwendet wird.

Verwendung regulärer Ausdrücke (Regex) in MongoDB – Crawler verfügbar

Grundkonzepte regulärer Ausdrücke:

        Reguläre Ausdrücke werden für den Mustervergleich verwendet, im Wesentlichen zum Suchen und Abgleichen von Zeichenfolgen in Dokumenten sowie für einige Validierungsregeln.

Reguläre Ausdrücke können uns dabei helfen, entsprechende Zeichenfolgen in Dokumenten schnell zu finden und zu lokalisieren.

Mustervergleich mit dem $regex-Operator

Der Regex-Operator in MongoDB wird verwendet, um nach einer bestimmten Zeichenfolge in einer Sammlung zu suchen.

Beispielsweise möchte ich für die Dokumente, die wir oben zur Zielsammlung hinzugefügt haben, jetzt die Dokumente abfragen, in denen das Wort „Dan“ vorkommt. Ich kann dann die Klasse für reguläre Ausdrücke verwenden, um Suchkriterien festzulegen.

#使用正则表达式来制定搜索条件
db.ExampleDB.find(
	{
		员工姓名 : {$regex : "丹"}
	}
).forEach(printjson)

 Code-Erklärung:

        Hier sind alle Mitarbeiternamen mit den Zeichen „Dan“ zu finden. Verwenden Sie daher den Regex-Operator $, um die Suchkriterien für „Dan“ zu definieren, und Sie können den Ergebnissen auch entnehmen, dass Dokumente zurückgegeben werden, die die entsprechenden chinesischen Zeichen enthalten.

Verwenden Sie die Grammatik in regulären Ausdrücken, um Abfrageregeln genau zu beschreiben

Regel „^“

Beispielsweise können wir vor der übereinstimmenden Regelzeichenfolge „^“ hinzufügen, um sicherzustellen, dass beim Abgleich keine Zeichen davor stehen.

Aus den Ergebnissen ist ersichtlich, dass die Funktion des Symbols „^“ darin besteht, festzulegen, dass bei der Suche keine anderen Zeichen vor dem Schlüsselwort stehen sollen.

 Regel „$“

Sie können auch die $-Symbolregel verwenden, um festzulegen, dass nach dem übereinstimmenden Zeichen keine weiteren Zeichen zulässig sind

 Aus den beiden Ergebnissen ist ersichtlich, dass nach dem Hinzufügen des $-Zeichens Zeichen nach dem Schlüsselwort nicht an der Suche teilnehmen.

andere Regeln

Zeichenübereinstimmung

Metazeichen  . können mit jedem Zeichen außer Newline übereinstimmen.

Beispiel: . " Kann mit jeder Zeichenfolge übereinstimmen, einschließlich der leeren Zeichenfolge.

Zeichensatz

Verwenden Sie geschweifte Klammern,  [] um eine Reihe von Zeichen darzustellen, die mit jedem übereinstimmen können.

Beispiel: [abc] Kann mit den Zeichen  a, b oder  übereinstimmen c.

Zeichenbereich

Ein Bindestrich wird verwendet, um  - einen Zeichenbereich anzugeben, der mit Zeichen innerhalb eines bestimmten Bereichs übereinstimmen kann.

Beispiel: [a-z] Kann mit Kleinbuchstaben übereinstimmen.

Satz negierter Zeichen

Verwenden Sie geschweifte Klammern,  [^] um einen negierten Zeichensatz auszudrücken, der mit jedem Zeichen außer den darin angegebenen übereinstimmt.

Beispiel: [^abc] Kann   mit jedem Zeichen außer den Zeichen a, b oder  übereinstimmen.c

Quantor

Quantifizierer werden verwendet, um die Häufigkeit des Vorkommens des vorhergehenden Elements abzugleichen. Zu den gängigen Quantoren gehören:

  • * Gibt an, dass das vorherige Element 0 oder öfter vorkommen kann.
  • + Gibt an, dass das vorherige Element einmal oder mehrmals vorkommen kann.
  • ? Gibt an, dass das vorherige Element 0 oder 1 Mal vorkommen kann.
  • {n} Gibt an, dass das vorherige Element n-mal vorkommt.
  • {n,} Gibt an, dass das vorhergehende Element mindestens n-mal vorkommt.
  • {n,m} Gibt an, dass das vorherige Element mindestens n-mal, jedoch nicht öfter als m-mal vorkommt.

Beispiel: a* Kann mit 0 oder mehr Buchstaben übereinstimmen  a.

Escape-Zeichen

In regulären Ausdrücken müssen einige Sonderzeichen  \ mit Backslashes maskiert werden, z. B.  \d Zahlen und \s Leerzeichen.

Beispiel: \d+ Kann mit einer oder mehreren Zahlen übereinstimmen.

Mustervergleich mit $options

Bei Verwendung regulärer Ausdrucksoperatoren können zusätzliche Optionen auch über das Schlüsselwort $options bereitgestellt werden. Angenommen, wir möchten alle Dokumente mit englischen Zeichen in der Zielsammlung finden, unabhängig davon, ob die Groß-/Kleinschreibung beachtet wird oder nicht. Wenn ein solches Ergebnis gewünscht ist, müssen wir $options mit Parametern verwenden, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird .

Jetzt führen wir dieselbe Abfrage wie die vorherige aus. In den Ergebnissen werden wir niemals Dokumente mit englischen Großbuchstaben sehen. Um sicherzustellen, dass es in der Ergebnismenge enthalten ist, müssen wir den Parameter $options „I“ hinzufügen.

db.Employee.find({EmployeeName:{$regex: “Gu”,$options:’i’}}).forEach(printjson)

Code-Erklärung:

1. $options mit einem „I“-Parameter (was bedeutet, dass die Groß-/Kleinschreibung nicht berücksichtigt wird) gibt an, dass die Suche unabhängig davon durchgeführt werden soll, ob der gefundene Buchstabe Klein- oder Großbuchstaben ist

2. Die Ergebnisse zeigen, dass das Dokument auch dann im Ergebnissatz angezeigt wird, wenn es einen Zielbuchstaben in Großbuchstaben enthält

Mustervergleich ohne Regex-Operator

 Der Regex-Operator wird hier nicht verwendet, und die reguläre Ausdrucksvergleichsoperation kann auch normal verwendet werden

#使用正则表达式来制定搜索条件
db.ExampleDB.find(
	{
		员工姓名 :  /库库丹/
	}
).forEach(printjson)

veranschaulichen:

        „//“ Diese Option in MongoDB gibt an, dass die Suchbedingungen in diesen Trennzeichen angegeben werden.

Wie bestimmte reguläre Ausdrücke geschrieben werden, kann anhand der oben bereitgestellten Dokumente beschrieben werden.

おすすめ

転載: blog.csdn.net/weixin_72186894/article/details/132104066