Búsquedas Avanzadas con Expresiones Regulares en MongoDB
Resumen
¿Qué es el operador de regex y por qué es útil?
El operador de regex es un potente recurso en el mundo del desarrollo de software que permite realizar búsquedas de patrones dentro de un texto. Resulta especialmente útil cuando se trabaja con bases de datos que contienen campos de texto, al facilitar la identificación de documentos que coincidan con ciertas condiciones específicas que no podrían ser detectadas con una búsqueda básica. Esto es vital para mejorar la eficiencia en la búsqueda de datos dentro de la base de datos, haciendo consultas más precisas y efectivas.
¿Cómo configurar el entorno para usar regex en base de datos?
Para usar este operador en tu base de datos, es primordial tener un entorno bien configurado. Siguiendo un ejemplo práctico, puedes empezar creando una carpeta específica para tus proyectos, nombrada apropiadamente para organizar tus archivos. Dentro de esta carpeta, puedes crear un archivo, por ejemplo, dataset.mongodb, donde se incluirá tu dataset. Es importante ejecutar el dataset para asegurar que contiene la descripción necesaria para tu búsqueda.
inventario.find
Esto te permitirá verificar cómo se alinean los documentos para proceder con las búsquedas en el texto utilizando el operador de regex.
¿Cómo realizar búsquedas utilizando el operador de regex?
La búsqueda con regex es muy versátil y ofrece varias formas de acotar o expandir la búsqueda según tus necesidades. Aquí te explico las formas comunes de buscar patrones de texto:
Búsqueda básica de un texto específico: Puedes buscar si una cierta palabra está dentro de un campo de texto. Si quieres buscar la palabra "line", simplemente debes usar:
{'item.description': /line/ }
Insensibilidad a mayúsculas: Si no te importa si las letras son mayúsculas o minúsculas, puedes utilizar la opción de insensibilidad al caso agregando i al final de tu patrón.
{'item.description': /line/i }
Búsqueda de términos que terminen con una palabra específica: Usar el signo $ al final del patrón te permite buscar documentos cuyo texto termine con esa palabra.
{'item.description': /line$/ }
Búsqueda que inicie con una palabra específica: El símbolo ^ se usa para indicar que la búsqueda debe encontrar textos que inicien con una palabra determinada.
{'item.description': /^single/i }
Búsquedas en múltiples líneas: Si la descripción de tu texto consta de varias líneas, puedes emplear la opción m que permite considerar los saltos de línea.
{'item.description': /^S/m }
¿Qué más podemos hacer con las expresiones regulares?
MongoDB no se limita solamente al operador de regex para realizar búsquedas avanzadas. Tiene un servicio llamado MongoDB Atlas Search que proporciona capacidades mucho más avanzadas. Este servicio es ideal para aquellos desarrollos que necesiten realizar búsquedas de texto completo (Full-Text Search), incorporando tecnologías como inteligencia artificial para manipular sinónimos y otros elementos adicionales en las búsquedas.
Si buscas mayor profundidad y un buscador completamente optimizado, este servicio puede ser la respuesta a tus necesidades. Además, también es una buena idea explorar cursos específicos sobre regex para enriquecer tus habilidades en el manejo de datos y búsquedas dentro de sistemas complejos.
En resumen, mientras que las expresiones regulares son una herramienta poderosa, explorar recursos adicionales como MongoDB Atlas puede ser valioso para implementar soluciones de búsqueda aún más robustas en tus proyectos.
También se puede usar el patrón de la expresión regular directamente sin $regex, por ejemplo:
db.inventory.find({"item.description":/line/})
Minuto 8:39, no sabia que existían los términos manisculas y miyusculas jejejeje
🤣🤣🤣
jajajssjajs me tuve que regresar para notarlo
Resumen: Todas las consultas se pueden efectuar correctamente sin usar el operador $regex.
++Consultas++
/line/ => nos devuelve los doc que tengan la palabra line, exactamente como esta escrita.
/line/i => nos devuelve los doc que tengan la palabra line, ignorando minus-mayus.
/line$/ => nos devuelve los doc que terminen con la palabra line.
/^Single/ => nos devuelve los doc que empiecen con la palabra Single.
/^S/m => nos devuelve los doc que empiecen por S, ignorando los saltos de linea. Ej:
( Single line
Second line ).
Gracias, me has ahorrado mucho tiempo al tomar notas. Appreciate it
^ = alt +94
Gracias!
Creo que seria un curso muy interesante crear un endpoint para un buscador con Mongodb Atlas Search
Me interesa MongoDB search :D
estaria genial un curso de MongoDb Atlas Search
use("platzi_store")// regex = expresiones regularesdb.inventory.find({"item.description":"Single line description."})db.inventory.find({"item.description":})db.inventory.find({"item.description":{$regex:/LINE/i}})// poner una "i" alfinal indica que se haga la busqeuda indiferentemente si esta en minuscula o mayusculadb.inventory.find({"item.description":{$regex:/line$/i}})// poner un $ alfinal es para que traiga los resultados que tienen esa palabra alfinaldb.inventory.find({"item.description":{$regex:/^single/i}})// poner un ^ al principio es para que traiga los resultados que tienen esa palabra alfinaldb.inventory.find({"item.description":{$regex:/^s/i}})// operador "m" para buscar en todos los documentos, aunque tengan saltos de lineadb.inventory.find({"item.description":{$regex:/^s/im}})
Me gustaria ver un curso de mongodb search
Hola,
Si, seria muy interesante tener eses curso ya que para mis proyectos estarian muy bien enfocados,
Muchas gracias
Estaria muy bien un curso completo de Atlas, donde se abarquen temas como Search, Charts, Administracion de Clusters, Backups, etc ...
Me gustaría ver un curso de Mongo Atlas Search!
Si no encuentras "^" en tu teclado, prueba con alt + 94
Las expresiones regulares tambien se ocupan mucho en el area de Voz sobre IP. Se ocupan para hacer match de numeros de telefonos.
"Regular Expresións" es ampliamente utilizado tanto en la móvil como en la fija para corregir sip-header en el registro, en llamadas entrantes para la presentación del calling number (número A) incluso para llamadas salientes (número B) a números cortos. También sirve para corregir el SDP del invite. Las aplicaciones no tienen limites en VoIP utilizando protocolo SIP.