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

Espressioni Regolari MongoDB

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 })

usare un'espressione regolare

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/})

usare un'espressione regolare indipendente dalle maiuscole e minuscole

Per rendere la ricerca indipendente dalle maiuscole e minuscole, usiamo$optionsparametro con value$iLa seguente comando troverà stringhe contenenti la parolaw3codeboxsenza 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 contienew3codeboxparola in diverse situazioni-

{
   "_id": ObjectId("53493d37d852429c10000004"),
   "post_text": "ciao! questo è il mio post su w3codebox", 
   "tags" : [ "w3codebox" ]
}

Utilizzo di espressioni regolari sugli elementi dell'array

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"}})

Ottimizzazione delle ricerche con espressioni regolari

  • Se il campo del documento èindicizzatoLa 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 prefissoTutti i corrispondenze devono iniziare con un carattere di stringa. Ad esempio, se l'espressione regolare è^tutAllora la ricerca deve cercare solo le stringhe che iniziano contut.