Latest web development tutorials

MongoDB regex

Reguläre Ausdrücke werden verwendet, um die Verwendung einer einzigen Saite zu beschreiben, im Einklang mit einer Reihe von syntaktischen Regeln Match-String.

Viele Programmiersprachen unterstützen die Verwendung von regulären Ausdrücken für String-Operationen.

MongoDB verwendet $ regex Operator die Zeichenfolge passenden regulären Ausdruck zu setzen.

MongoDB verwendet PCRE (Perl Compatible Regular Expression) als Sprache für reguläre Ausdrücke.

Im Gegensatz zu Volltextsuche verwenden wir einen regulären Ausdruck benötigt keine Konfiguration zu tun.

Betrachten Sie das folgende Dokument Struktur Satz von Pfosten, enthält das Dokument den Inhalt des Artikels und dem Etikett:

{
   "post_text": "enjoy the mongodb articles on tutorialspoint",
   "tags": [
      "mongodb",
      "tutorialspoint"
   ]
}

Verwenden von regulären Ausdrücken

Die folgenden Befehle verwenden reguläre Ausdrücke Artikel enthält w3cschool.cc Strings zu finden:

>db.posts.find({post_text:{$regex:"w3cschool.cc"}})

Die obige Abfrage kann auch geschrieben werden als:

>db.posts.find({post_text:/w3cschool.cc/})

Groß- und Kleinschreibung von regulären Ausdrücken

Wenn Sie ein Groß- und Kleinschreibung abrufen müssen, können wir die $ Optionen wie $ i gesetzt.

Der folgende Befehl wird Groß- und Kleinschreibung Zeichenfolge w3cschool.cc finden:

>db.posts.find({post_text:{$regex:"w3cschool.cc",$options:"$i"}})

Die Sammlung wird alle Daten geben die Zeichenfolge w3cschool.cc enthält, ist nicht case sensitive:

{
   "_id" : ObjectId("53493d37d852429c10000004"),
   "post_text" : "hey! this is my post on  W3Cschool.cc", 
   "tags" : [ "tutorialspoint" ]
} 

Array-Elemente mit regulären Ausdrücken

Wir können auch reguläre Ausdrücke im Array-Feld verwenden, um Inhalte zu finden. Dies ist bei der Realisierung des Etiketts nützlich, wenn Sie das Etikett enthält Daten (Tutorial oder Tutorials oder tutorialpoint oder tutorialphp) Tutorial am Anfang zu finden, dann können Sie den folgenden Code verwenden:

>db.posts.find({tags:{$regex:"tutorial"}})

Optimierung der Regular Expressions Abfrage

  • Wenn Ihr Dokument Indexfeld gesetzt ist, dann ist die Verwendung des Index zu dem regulären Ausdruck verglichen passend zu allen Daten zu finden, schneller abfragt.

  • Wenn der reguläre Ausdruck ein Präfix Ausdruck ist, werden alle passenden Daten Präfixzeichenfolge zu starten angegeben werden. Zum Beispiel: Wenn der reguläre Ausdruck ^ tut, tut Abfrage wird an den Anfang des Strings suchen.

Es ist die Verwendung von regulären Ausdrücken gibt es zwei Punkte zu beachten:

Reguläre Ausdrücke mit Variablen. Achten Sie darauf, eine Kombination von String-eval zu verwenden, konvertiert nach nicht direkt auf die String-Verkettung Ausdruck übergeben werden kann. Ansonsten gibt es keine Fehlermeldung, aber das Ergebnis ist leer! Beispiele sind wie folgt:

var name=eval("/" + 变量值key +"/i"); 

Das Folgende ist eine Fuzzy-Abfrage enthält Titel Schlüsselwort wird die Groß-:

title:eval("/"+title+"/i")    // 等同于 title:{$regex:title,$Option:"$i"}