English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
L'espressione regolare viene utilizzata frequentemente in tutte le lingue per cercare modelli o parole in qualsiasi stringa. MongoDB utilizza anche l'operatore $regex per fornire la funzionalità di confronto di modelli di stringa tramite espressioni regolari. MongoDB utilizza PCRE (Perl Compatible Regular Expressions) come linguaggio di espressione regolare.
a differenza della ricerca testuale, non è necessario configurare o eseguire alcun comando per utilizzare l'espressione regolare.
supponiamo di aver già inserito un documento nel database chiamato posts un documento è stato inserito nel database chiamato
>db.posts.insert( { "post_text": "goditi gli articoli mongodb su w3codebox", "tags": [ "mongodb" "w3codebox" ] } WriteResult({ "nInserted": 1 })
La seguente query regex cerca tutti i post che contengono la stringa w3codebox–
>db.posts.find({post_text:{$regex:"w3codebox"}}).pretty(){ "_id": ObjectId("5dd7ce28f1dd4583e7103fe0"), "post_text": "goditi gli articoli mongodb su w3codebox", "tags": [ "mongodb" "w3codebox" ] } { "_id": ObjectId("5dd7d111f1dd4583e7103fe2"), "post_text": "goditi gli articoli mongodb su w3codebox", "tags": [ "mongodb" "w3codebox" ] } >
La stessa query può essere scritta come-
>db.posts.find({post_text:/w3codebox/})
Per rendere la ricerca indipendente dalle maiuscole e minuscole, usiamo$options
parametro con value$i
La seguente comando troverà stringhe contenenti la parolaw3codebox
senza considerare la differenza tra maiuscole e minuscole-
>db.posts.find({post_text:{$regex:"w3codebox",$options:"$i"}})
uno dei risultati restituiti dalla query è il seguente documento, che contienew3codebox
parola in diverse situazioni-
{ "_id": ObjectId("53493d37d852429c10000004"), "post_text": "ciao! questo è il mio post su w3codebox", "tags" : [ "w3codebox" ] }
Possiamo anche utilizzare il concetto di espressioni regolari sui campi dell'array. Quando implementiamo la funzione etichetta, questo è particolarmente importante. Pertanto, se si desidera cercare tutte le parole con etichetta che iniziano con la parola tutorial (guida o tutorialpoint o tutorialphp), è possibile utilizzare il seguente codice-
>db.posts.find({tags:{$regex:"tutorial"}})
Se il campo del documento èindicizzato
La ricerca utilizzerà il valore dell'indice per corrispondere all'espressione regolare. rispetto alla scansione dell'intera raccolta con l'espressione regolare, questo rende la ricerca molto veloce.
Se l'espressione regolare èespressione prefisso
Tutti i corrispondenze devono iniziare con un carattere di stringa. Ad esempio, se l'espressione regolare è^tut
Allora la ricerca deve cercare solo le stringhe che iniziano contut
.