Latest web development tutorials

MongoDB regex

Las expresiones regulares se utilizan para describir el uso de una sola cadena, en línea con una serie de cadena de reglas de coincidencia sintáctica.

Muchos lenguajes de programación soportan el uso de expresiones regulares para operaciones de cadenas.

MongoDB usa $ operador de expresión regular para establecer la cadena de búsqueda de expresión regular.

MongoDB utiliza PCRE (Perl Compatible Regular Expressions) como un lenguaje de expresiones regulares.

A diferencia de la búsqueda de texto completo, se utiliza una expresión regular no es necesario realizar ninguna configuración.

Considere el siguiente documento de estructura de conjunto de mensajes, el documento contiene el contenido del artículo y la etiqueta:

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

Uso de expresiones regulares

Los siguientes comandos utilizan expresiones regulares para encontrar el artículo contiene cadenas w3cschool.cc:

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

La consulta anterior también se puede escribir como:

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

expresiones regulares entre mayúsculas y minúsculas

Si necesita recuperar una entre mayúsculas y minúsculas, podemos establecer las opciones como $ $ i.

El siguiente comando se encuentra entre mayúsculas y minúsculas w3cschool.cc cadena:

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

La colección devolverá todos los datos que incluyan la cadena w3cschool.cc no distingue entre mayúsculas y minúsculas:

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

elementos de la matriz usando expresiones regulares

También podemos usar expresiones regulares en el campo de matriz para encontrar contenido. Esto es útil en la realización de la etiqueta, si usted necesita para encontrar la etiqueta contiene datos (tutorial o tutoriales o tutorialpoint o tutorialphp) tutorial al principio, puede utilizar el siguiente código:

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

La optimización de consulta de Expresiones regulares

  • Si su campo de índice del documento se establece, entonces el uso del índice en comparación con el ajuste de expresiones regulares para encontrar todos los datos de las consultas más rápidamente.

  • Si la expresión regular es una expresión prefijo, todos los datos coincidentes se especificarán cadena de prefijo para empezar. Por ejemplo: Si la expresión regular es ^ tut, tut consulta se verá al principio de la cadena.

No es el uso de expresiones regulares Hay dos puntos a tener en cuenta:

Las expresiones regulares usando variables. Asegúrese de utilizar una combinación de cadena eval convertirá después no se puede pasar directamente a la expresión de concatenación de cadenas. De lo contrario no hay ningún mensaje de error, pero el resultado está vacío! Ejemplos son los siguientes:

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

La siguiente es una consulta difusa contiene palabra clave del título no distingue entre mayúsculas y minúsculas:

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