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

Expresiones regulares MongoDB

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

Usar expresiones regulares

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

Usar expresiones regulares insensibles a mayúsculas y minúsculas

Para que la búsqueda no distinga entre mayúsculas y minúsculas, usamos$optionscon 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 contienew3codeboxpalabras en diferentes situaciones-

{
   "_id": ObjectId("53493d37d852429c10000004")
   "post_text": "¡Hey! Esto es mi publicación en w3codebox", 
   "tags" : [ "w3codebox" ]
}

Uso de expresiones regulares en elementos de matriz

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

Optimización de consultas de expresiones regulares

  • Si el campo del documento esindexadoLa 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 prefijoEntonces, todos los elementos coincidentes deben comenzar con algún carácter de una cadena. Por ejemplo, si la expresión regular es^tutEntonces, la consulta debe buscar solo las cadenas que comienzan contut.