English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MongoDB-Regulärer Ausdruck

MongoDB Advanced Tutorial

Unterschiedlich von der Textsuche müssen wir keine Konfiguration oder Befehle durchführen, um reguläre Ausdrücke zu verwenden. Reguläre Ausdrücke werden in allen Sprachen häufig zur Suche nach Mustern oder Wörtern in beliebigen Strings verwendet. MongoDB bietet auch die Funktion der regulären Ausdrücke für die Zeichenkettenabgleichsmuster durch den Operator $regex. MongoDB verwendet PCRE (Perl Compatible Regular Expressions) als reguläres Ausdrucks-Sprachmodell.

angenommen, dass wir bereits in einer posts eine Dokument wurde in die Datenbank

>db.posts.insert(
{
   "post_text": "enjoy the mongodb articles on w3codebox",
   "tags": [
      "mongodb",
      "w3codebox"
   ]
}
WriteResult({ "nInserted": 1 })

mit regulären Ausdrücken

Der folgende regex-Ausdruck sucht nach dem String w3Alle Beiträge von codebox –

>db.posts.find({post_text:{$regex:"w3codebox"}}).pretty(){
	"_id": ObjectId("5dd7ce28f1dd4583e7103fe0"),
	"post_text": "enjoy the mongodb articles on w3codebox",
	"tags": [
		"mongodb",
		"w3codebox"
	]
}
{
	"_id": ObjectId("5dd7d111f1dd4583e7103fe2),
	"post_text": "enjoy the mongodb articles on w3codebox",
	"tags": [
		"mongodb",
		"w3codebox"
	]
}
>

Eine gleiche Abfrage kann auch so formuliert werden-

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

unsere regulären Ausdrücke, die keine Unterscheidung zwischen Groß- und Kleinbuchstaben vornehmen

Um die Suche nicht groß- und klein geschriebenen Buchstaben zu unterscheiden, verwenden wir$optionsmit dem value-Parameter$i。Der folgende Befehl wird nach Strings mit dem Wort suchenw3codebox,ohne Gross- und Kleinbuchstaben zu berücksichtigen-

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

Eine der Ergebnisse dieser Abfrage ist das folgende Dokument, das enthältw3codeboxin verschiedenen Situationen-

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

Reguläre Ausdrücke auf Array-Elementen verwenden

Wir können auch das Konzept der regulären Ausdrücke in Array-Feldern verwenden. Wenn wir die Funktion der Tags implementieren, ist dies besonders wichtig. Daher können Sie, um nach allen mit Tags gesuchten Wörtern zu suchen, die mit dem Wort tutorial (Tutorial oder tutorialpoint oder tutorialphp) beginnen, den folgenden Code verwenden-

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

Optimierung der regulären Ausdrucksabfrage

  • wenn das Document-Feldindexiertwird die Abfrage den Indexwert verwenden, um den regulären Ausdruck zu matchen. Dies macht die Suche sehr schnell im Vergleich zum Scannen des gesamten Sammlungsregulären Ausdrucks.

  • wird der reguläre AusdruckPräfix-Ausdruckbeginnen. Zum Beispiel, wenn der regex-Ausdruck^tutDann muss die Abfrage nur nach Strings suchen, die mit beginnendtut.