English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Las expresiones regulares se utilizan comúnmente en todos los idiomas para buscar patrones o palabras en cualquier cadena de caracteres. MongoDB también utiliza el operador $regex para proporcionar la funcionalidad de coincidencia de patrones de cadenas de caracteres mediante expresiones regulares. MongoDB utiliza PCRE (expresiones regulares compatibles con Perl) como lenguaje de expresiones regulares.
A diferencia de la búsqueda de texto, no es necesario realizar ninguna configuración o comando para usar expresiones regulares.
Supongamos que ya hemos estado en posts Se insertó un documento en la base de datos llamada
>>db.posts.insert( { "post_text": "disfruta de los artículos de mongodb en w3codebox", "tags": [ "mongodb", "w3codebox" ] } WriteResult({ "nInserted": 1 })
La consulta regex busca cadenas de caracteres que contienen la cadena w3Todos los mensajes de codebox–
>>db.posts.find({post_text:{$regex:"w3codebox"}}).pretty() { "_id": ObjectId("5dd7ce28f1dd4583e7103fe0"), "post_text": "disfruta de los artículos de mongodb en w3codebox", "tags": [ "mongodb", "w3codebox" ] } { "_id": ObjectId("5dd7d111f1dd4583e7103fe2") "post_text": "disfruta de los artículos de mongodb en w3codebox", "tags": [ "mongodb", "w3codebox" ] } >>
La misma consulta también se puede escribir-
>>db.posts.find({post_text:/w3codebox/})
Para que la búsqueda no distinga entre mayúsculas y minúsculas, usamos$options
con parámetros de valor$i
。La siguiente orden buscará cadenas de caracteres con la palabraw3codebox
,sin considerar mayúsculas y minúsculas-
>>db.posts.find({post_text:{$regex:"w3codebox", $options:"$i"})
Uno de los resultados de la consulta es el siguiente documento, que contienew3codebox
palabras en diferentes situaciones-
{ "_id": ObjectId("53493d37d852429c10000004") "post_text": "¡Hey! Esto es mi publicación en w3codebox", "tags" : [ "w3codebox" ] }
También podemos usar el concepto de expresiones regulares en campos de matriz. Esto es particularmente importante cuando implementamos la función de etiquetas. Por lo tanto, si desea buscar todas las palabras con etiquetas que comienzan con la palabra tutorial (tutoriales o tutorialpoint o tutorialphp), puede usar el siguiente código-
>db.posts.find({tags:{$regex:"tutorial"}})
Si el campo del documento esindexado
La consulta utilizará los valores de índice para coincidir con la expresión regular. En comparación con el escaneo completo de la colección de expresiones regulares, esto hace que la búsqueda sea muy rápida.
Si la expresión regular esexpresión de prefijo
Entonces, todos los elementos coincidentes deben comenzar con algún carácter de una cadena. Por ejemplo, si la expresión regular es^tut
Entonces, la consulta debe buscar solo las cadenas que comienzan contut
.