English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 })
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/})
Um die Suche nicht groß- und klein geschriebenen Buchstaben zu unterscheiden, verwenden wir$options
mit 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ältw3codebox
in verschiedenen Situationen-
{ "_id": ObjectId("53493d37d852429c10000004), "post_text": "hey! this is my post on w3codebox", "tags" : [ "w3codebox" ] }
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"}})
wenn das Document-Feldindexiert
wird 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-Ausdruck
beginnen. Zum Beispiel, wenn der regex-Ausdruck^tut
Dann muss die Abfrage nur nach Strings suchen, die mit beginnendtut
.