Visión general
- Discutiremos cómo puede consultar una base de datosUna base de datos es un conjunto organizado de información que permite almacenar, gestionar y recuperar datos de manera eficiente. Utilizadas en diversas aplicaciones, desde sistemas empresariales hasta plataformas en línea, las bases de datos pueden ser relacionales o no relacionales. Su diseño adecuado es fundamental para optimizar el rendimiento y garantizar la integridad de la información, facilitando así la toma de decisiones informadas en diferentes contextos.... MongoDB usando la biblioteca PyMongo.
- Cubriremos las operaciones básicas de agregación en MongoDB.
Introducción
Tras la expansión global de Internet, estamos generando datos a un ritmo sin precedentes ahora. Debido a que realizar cualquier tipo de análisis requeriría que recopilemos / consultemos los datos necesarios de la base de datos, es de suma importancia que elijamos la herramienta adecuada para consultar los datos. En consecuencia, no podemos imaginarnos usando SQL para trabajar con este volumen de datos, ya que cada consulta será costosa.
Aquí es precisamente donde entra MongoDB. MongoDB es una base de datos no estructurada que almacena datos en forma de documentos. Además, MongoDB puede manejar grandes volúmenes de datos de manera muy eficiente y es la base de datos NoSQLLas bases de datos NoSQL son sistemas de gestión de datos que se caracterizan por su flexibilidad y escalabilidad. A diferencia de las bases de datos relacionales, utilizan modelos de datos no estructurados, como documentos, clave-valor o gráficos. Son ideales para aplicaciones que requieren manejo de grandes volúmenes de información y alta disponibilidad, como en el caso de redes sociales o servicios en la nube. Su popularidad ha crecido en... más utilizada, ya que ofrece un lenguaje de consulta rico y un acceso rápido y flexible a los datos.
En este artículo, veremos varios ejemplos de cómo consultar una base de datos MongoDB usando PyMongo. Además, veremos cómo utilizar los operadores de comparaciónLos operadores de comparación son herramientas fundamentales en programación y matemáticas que permiten evaluar relaciones entre valores. Estos incluyen operadores como mayor que (>), menor que (<), igual a (==) y diferente de (!=). Su función principal es retornar un valor booleano, es decir, verdadero o falso, facilitando la toma de decisiones en algoritmos y la manipulación de datos en estructuras de control como condicionales y bucles.... y los operadores lógicosLos operadores lógicos son símbolos o palabras clave que permiten combinar y evaluar expresiones booleanas en programación y matemáticas. Los más comunes son AND, OR y NOT. Estos operadores son fundamentales para el desarrollo de algoritmos y la toma de decisiones en sistemas informáticos, facilitando la ejecución de condiciones complejas. Su correcto uso optimiza el flujo de control y mejora la eficiencia en la resolución de problemas...., la expresión regular y los conceptos básicos de las canalizaciones de agregación.
Este artículo es una continuación del Tutorial de MongoDB en Python para principiantes, donde cubrimos los desafíos de las bases de datos no estructuradas, los pasos de instalación y las operaciones básicas de MongoDB. Entonces, si es un principiante completo en MongoDB, le recomendaría que lea ese artículo primero.
Tabla de contenido
- ¿Qué es PyMongo?
- Pasos de instalación
- Inserta los datos en la base de datos
- Consultar la base de datos
- Filtro basado en campos
- Filtro basado en operadores de comparación
- Filtro basado en operadores lógicos
- Expresiones regulares
- Tuberías de agregación
- Notas finales
¿Qué es PyMongo?
PyMongo es una biblioteca de Python que nos permite conectarnos con MongoDB. Además, esta es la forma más recomendada de trabajar con MongoDB y Python.
Además, hemos elegido Python para interactuar con MongoDB porque es uno de los lenguajes más utilizados y considerablemente más potentes para Ciencia de los datos. PyMongo nos permite recuperar los datos con una sintaxis similar a la de un diccionario.
En caso de que seas un principiante en Python, te recomendaré que te inscribas en este curso gratuito: Introducción a Python.
Pasos de instalación
Instalar PyMongo es simple y sencillo. Aquí, supongo que ya tiene Python 3 y MongoDB instalados. El siguiente comando le ayudará a instalar PyMongo:
pip3 install pymongo
Inserte los datos en la base de datos
Ahora configuremos las cosas antes de consultar una base de datos MongoDB usando PyMongo. Primero insertaremos los datos en la base de datos. Los siguientes pasos lo ayudarán en esto:
Importar las bibliotecas y conectarse al cliente mongo
Inicie el servidor MongoDB en su máquina. Supongo que se está ejecutando un archivo en localhost: 27017.
Comencemos importando algunas de las bibliotecas que vamos a utilizar. De forma predeterminada, el servidor MongoDB se ejecuta en el puerto 27017 de la máquina local. Luego, nos conectaremos al cliente MongoDB usando el Pymongo Biblioteca.
Luego, obtenga la instancia de base de datos de la base de datos sample_db. En caso de que no exista, MongoDB creará uno para usted.
Crea las colecciones a partir de los archivos JSON
Usaremos los datos de una empresa de entrega de comidas que opera en varias ciudades. Además, tienen varios centros logísticos en estas ciudades para enviar pedidos de comida a sus clientes. Puede descargar el datos y el código aquí.
- demanda_semanal:
- identificación: ID único para cada documento
- semana: Número de la semana
- center_id: ID único para el centro logístico
- comida_id: ID único para comida
- checkout_price: Precio final con descuento, impuestos y gastos de envío
- precio base: Precio base de la comida
- emailer_for_promotion: Emailer enviado para la promoción de la comida
- homepage_featured: Comida presentada en la página de inicio.
- num_orders: (Destino) Recuento de pedidos
- comida_info:
- comida_id: ID único para la comida
- categoría: Tipo de comida (bebidas / snacks / sopas….)
- cocina: Cocina de comida (india / italiana /…)
Luego crearemos dos colecciones en la base de datos sample_db:
- demanda_semanal:
Insertar datos en colecciones
Ahora, los datos que tenemos están en formato JSONJSON, o JavaScript Object Notation, es un formato ligero de intercambio de datos que es fácil de leer y escribir para los humanos, y fácil de analizar y generar para las máquinas. Se utiliza comúnmente en aplicaciones web para enviar y recibir información entre un servidor y un cliente. Su estructura se basa en pares de clave-valor, lo que lo hace versátil y ampliamente adoptado en el desarrollo de software.... Luego obtendremos la instancia de la colección, leeremos el archivo de datos e insertaremos los datos usando el insert_many función.
Finalmente, tenemos 456548 documentos en la colección de demanda semanal y 51 documentos en la colección de información de comidas. Ahora, echemos un vistazo a un documento de cada una de estas colecciones.
colección_de_de_semanal
meal_info_collection
Ahora, nuestros datos están listos. Pasemos a consultar esta base de datos.
Consultar la base de datos
Podemos consultar una base de datos MongoDB usando PyMonfo con el encontrar función para obtener todos los resultados que satisfacen la condición dada y también usando la Encuentra uno función que devolverá solo un resultado que satisfaga la condición.
La siguiente es la sintaxis de find y find_one:
your_collection.find( {<< query >>} , { << fields>>} )
Puede consultar la base de datos utilizando las siguientes técnicas de filtrado:
Filtro basado en campos
Por ejemplo, tiene cientos de campos y desea ver solo algunos de ellos. Puede hacerlo simplemente poniendo todos los nombres de campo obligatorios con el valor 1. Por ejemplo:
Por otro lado, si desea descartar algunos campos solo del documento completo, puede poner los nombres de los campos iguales a 0. Por lo tanto, solo esos campos serán excluidos. Tenga en cuenta que no puede utilizar una combinación de 1 y 0 para obtener los campos. O todos deben ser uno o todos deben ser cero.
Filtrar con una condición
Ahora, en esta sección, proporcionaremos una condición en las primeras llaves y campos para descartar en la segunda. En consecuencia, devolverá el primer documento con center_id es igual a 55 y meal_id es igual a 1885 y también descartará los campos _id y week.
Filtro basado en operadores de comparación
Los siguientes son los nueve operadores de comparación en MongoDB.
NOMBRE DESCRIPCIÓN $eq
Coincidirá con los valores que sean iguales a un valor especificado. $gt
Coincidirá con los valores que sean mayores que un valor especificado. $gte
Coincidirá con todos los valores que sean mayores o iguales a un valor especificado. $in
Coincidirá con cualquiera de los valores especificados en una matriz. $lt
Coincidirá con todos los valores que sean menores que un valor especificado. $lte
Coincidirá con todos los valores que sean menores o iguales a un valor especificado. $ne
Coincidirá con todos los valores que no sean iguales a un valor especificado. $nin
No coincidirá con ninguno de los valores especificados en una matriz. Los siguientes son algunos ejemplos del uso de estos operadores de comparación:
Igual que y no igual a
Encontraremos todos los documentos donde center_id es igual a 55 y homepage_featured no es igual a 0. Como vamos a usar la función de búsqueda, devolverá el cursor para ese comando. Además, use un bucle for para recorrer en iteración los resultados de la consulta.
En la lista y no en la lista
Por ejemplo, debe hacer coincidir un elemento con varios elementos. En ese caso, en lugar de usar el operador $ eq varias veces, podemos usar el operador $ in. Intentaremos encontrar todos los documentos donde center_id sea 24 u 11.
Luego, buscamos todos los documentos donde center_id no está presente en la lista especificada. La siguiente consulta devolverá todos los documentos donde center_id no es 24 y tampoco 11.
Menor que y Mayor que
Ahora, busquemos todos los documentos donde center_id es 55 y checkout_price es mayor que 100 y menor que 200. Use la siguiente sintaxis para esto-
Filtro basado en operador lógico
NOMBRE DESCRIPCIÓN $and
Unirá las cláusulas de consulta con una lógica. AND
y devuelve todos los documentos que cumplen ambas condiciones.$not
Invertirá el efecto de una consulta y devolverá documentos que no no coincidir con la expresión de la consulta. $nor
Unirá las cláusulas de consulta con una lógica. NOR
y devuelva todos los documentos que no cumplan con las cláusulas.$or
Unirá las cláusulas de consulta con una lógica. OR
y devuelva todos los documentos que coincidan con las condiciones de cualquiera de las cláusulas.Los siguientes ejemplos ilustran el uso de operadores lógicos:
Y operador
La siguiente consulta devolverá todos los documentos donde center_id es igual a 11 y también meal_id no es igual a 1778. Las subconsultas para el y El operador entrará en una lista.
Operador OR
La siguiente consulta devolverá todos los documentos donde center_id es igual a 11 o meal_id es 1207 o 2707. Además, las subconsultas para el o El operador entrará en una lista.
Filtrar con expresiones regulares
Las expresiones regulares son de gran utilidad cuando tiene campos de texto y desea buscar documentos con un patrón específico. En caso de que desee obtener más información sobre las expresiones regulares, le recomiendo que lea este artículo: Tutorial para principiantes de expresiones regulares en Python.
Se puede utilizar con el operador. $ regex y podemos proporcionar valor al operador para que el patrón de expresiones regulares sea matc. Usaremos la colección meal_info para esta consulta y luego encontraremos los documentos donde el campo de cocina comienza con carácter C.
Tomemos otro ejemplo de expresiones regulares. Descubriremos todos los documentos en los que la categoría comienza desde el personaje. «S» y la cocina termina con «Ian“.
Tuberías de agregación
La canalización de agregación de MongoDB proporciona un marco para realizar una serie de transformaciones de datos en un conjunto de datos. La siguiente es su sintaxis:
your_collection.aggregate( [ { <stage1> }, { <stage2> },.. ] )
La primera etapa toma el conjunto completo de documentos como entrada y, desde allí, cada etapa subsiguiente toma el conjunto de resultados de la transformación anterior como entrada para la siguiente etapa y produce la salida.
Hay alrededor de 10 transformaciones disponibles en el agregado de MongoDB, de las cuales veremos $ partido y $ grupo en este articulo. Discutiremos cada una de las transformaciones en detalle en el próximo artículo de MongoDB.
Por ejemplo, en la primera etapa, haremos coincidir los documentos donde center_id es igual a 11 y en la siguiente etapa, contará el número de documentos con center_id igual a 11. Tenga en cuenta que hemos asignado el $ count operador el valor igual total_rows en la segunda etapa que es el nombre del campo que queremos en la salida.
Ahora, tomemos otro ejemplo donde la primera etapa es la misma que antes, es decir, center_id es igual a 11 y en la segunda etapa, queremos calcular el promedio del campo num_orders para el center_id 11 y los únicos meal_ids para el center_id 11.
Notas finales
La insondable cantidad de datos que se generan hoy en día hace necesario encontrar mejores alternativas como esta para consultar datos. Para resumir, en este artículo, aprendimos cómo consultar una base de datos MongoDB usando PyMongo. Además, entendimos cómo aplicar varios filtros según la situación requerida.
En caso de que desee obtener más información sobre la consulta de datos, le recomiendo el siguiente curso: Lenguaje de consulta estructurado (SQL) para ciencia de datos
En el próximo artículo, analizaremos las canalizaciones de agregación en detalle.
Te animo a que pruebes cosas por tu cuenta y compartas tus experiencias en la sección de comentarios. Además, si tiene algún problema con alguno de los conceptos anteriores, no dude en preguntarme en los comentarios a continuación.