MongoDB - Regelmessige Expression

regulære uttrykk brukes ofte i alle språk for å søke etter et mønster eller et ord i noen streng. MongoDB gir også funksjonalitet for regulære uttrykk for streng mønstergjenkjenning ved hjelp av $ regex
operatør. MongoDB bruker PCRE (Perl Kompatibel Regular Expression) som vanlig uttrykk språk.

I motsetning tekstsøk, vi trenger ikke å gjøre noen konfigurasjon eller kommando for å bruke vanlige uttrykk.

Tenk deg følgende dokumentstrukturen under innlegg
samling som inneholder innlegget tekst og dets tags: product: {"post_text": "nyte mongodb artikler om tutorialspoint", "tags": ["mongodb", "tutorialspoint"]}
Bruke regex Expression

Følgende regex spørre søker etter alle innlegg som inneholder strengen tutorialspoint
i det:
> db.posts.find ({post_text: {$ regex: "tutorialspoint "}})

Det samme spørsmålet kan også skrives som:
> db.posts.find ({post_text: /tutorialspoint /})
Bruke regex Expression med små bokstaver

Å gjøre søket små bokstaver, bruker vi $ alternativer
parameter med verdi $ i
sikret følgende kommando vil se etter strenger å ha ordet tutorialspoint
, uavhengig av mindre eller kapital saken:
> db.posts.find ({post_text: {$ regex: "tutorialspoint", $ alternativer: "$ i"}})

Et av resultatene finjustert fra denne spørringen er følgende dokument som inneholder Ordet tutorialspoint i ulike tilfeller: product: {"_id": objectID ("53493d37d852429c10000004"), "post_text": "Hei! Dette er mitt innlegg på TutorialsPoint "," tags ": [" tutorialspoint "]}


Bruke regex for array elementer:

Vi kan også bruke begrepet regex på rekke felt . Dette er spesielt viktig når vi implementerer funksjonaliteten tags Så hvis du ønsker å søke etter alle innleggene som har koder som begynner fra ordet tutorial (enten tutorial eller tutorials eller tutorialpoint eller tutorialphp), kan du bruke følgende kode:. < br >> db.posts.find ({tags: {$ regex: "tutorial"}})


Optimalisere regulære uttrykk spørringer:

Hvis dokumentet feltene er indeksert
, vil søket bruke gjøre bruk av indekserte verdier for å matche den regulære uttrykk. Dette gjør søket veldig fort i forhold til det vanlige uttrykket skanne hele samlingen.

Hvis det regulære uttrykket er en prefiks uttrykk
, blir alle kampene ment å starte med en viss streng tegn. For eksempel, hvis regex uttrykket er ^ tut
, deretter spørringen har for å søke etter bare de strengene som begynner med tut
.