Latest web development tutorials

MongoDB regex

espressioni regolari sono utilizzate per descrivere l'uso di una singola stringa, in linea con una serie di regole sintattiche stringa partita.

Molti linguaggi di programmazione supportano l'uso delle espressioni regolari per le operazioni di stringa.

MongoDB usa $ operatore regex per impostare la stringa corrispondente espressione regolare.

MongoDB usa PCRE (Perl Compatible Regular Expression) come linguaggio delle espressioni regolari.

A differenza di ricerca full-text, si usa una espressione regolare non ha bisogno di fare alcuna configurazione.

Si consideri la seguente struttura set di documenti di tutti i messaggi, il documento contiene il contenuto dell'articolo e l'etichetta:

{
   "post_text": "enjoy the mongodb articles on tutorialspoint",
   "tags": [
      "mongodb",
      "tutorialspoint"
   ]
}

Uso delle espressioni regolari

I seguenti comandi utilizzano espressioni regolari per trovare articolo contiene stringhe w3cschool.cc:

>db.posts.find({post_text:{$regex:"w3cschool.cc"}})

La query sopra può anche essere scritta come:

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

espressioni regolari case-insensitive

Se avete bisogno di recuperare un case-insensitive, siamo in grado di impostare le opzioni di $ come $ i.

Il seguente comando troverà case-insensitive w3cschool.cc stringa:

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

La collezione sarà restituire tutti i dati che w3cschool.cc stringa non è case sensitive:

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

elementi di matrice usando le espressioni regolari

Possiamo anche usare le espressioni regolari nel campo array per trovare i contenuti. Questo è utile nella realizzazione dell'etichetta, se hai bisogno di trovare l'etichetta contiene dati (tutorial o tutorial o tutorialpoint o tutorialphp) tutorial all'inizio, è possibile utilizzare il seguente codice:

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

Ottimizzazione regolare interrogazione Espressioni

  • Se il campo indice del documento è impostato, l'uso dell'indice rispetto alla espressione regolare corrispondenza di trovare tutti i dati di query più veloce.

  • Se l'espressione regolare è un'espressione prefisso, tutti i dati corrispondenti saranno specificati stringa di prefisso per iniziare. Ad esempio: se l'espressione regolare è ^ tut, tut interrogazione apparirà all'inizio della stringa.

Vi è l'uso di espressioni regolari ci sono due punti da notare:

Le espressioni regolari che utilizzano variabili. Assicurarsi di utilizzare una combinazione di eval stringa convertirà dopo non può essere direttamente passato all'espressione concatenazione di stringhe. In caso contrario, non vi è alcun messaggio di errore, ma il risultato è vuoto! Esempi sono i seguenti:

var name=eval("/" + 变量值key +"/i"); 

Quanto segue è una query sfocata contiene titolo parola chiave non è case sensitive:

title:eval("/"+title+"/i")    // 等同于 title:{$regex:title,$Option:"$i"}