Antes de aprender sobre inyección NoSQL, veamos cómo funcionan las bases de datos NoSQL. En esta unidad nos centraremos en MongoDB. Aunque hay otras soluciones NoSQL, los principios de mongo pueden aplicarse a estas.


MongoDB

Como MySQL, MariaDB o PostgreSQL, MongoDB es una base de datos donde puedes almacenar información de forma ordenada. MongoDB permite recuperar subconjuntos de información de forma rápida y estructurada. Si estás familiarizado con la bases de datos relacionales, puedes asumir que MongoDB funciona de manera similar a cualquier otra. La mayor excepción es que la información no se guarda en tablas sino en documentos.

Puedes pensar en estos documentos como una estructura de diccionario donde se guardan valores por pares clave-valor. Digamos que estamos creando una aplicación web para el departamento HR y queremos guardar información básica de los empleados. Crearías un documento para cada empleado que contuviese la información así:

{"_id" : ObjectId("5f077332de2cdf808d26cd74"), "username" : "lphillips", "first_name" : "Logan", "last_name" : "Phillips", "age" : "65", "email" : "lphillips@example.com" }

MongoDB te permite agrupar múltiples documentos con una función similar juntos en estructuras de jerarquía superior llamadas colecciones con propósitos de organización. Las colecciones son el equivalente de las tablas. Continuando con el ejemplo de Recursos Humanos, todos los documentos de los empleados se guardan en una colección llamada "people" como se muestra en el diagrama inferior.

What is NoSQL

Múltiples colecciones se agrupan en bases de datos que es el elemento jerárquico más alto en MongoDB. En las bases de datos relacionales, el concepto de base de datos agrupa varias tablas juntas. En MongoDB agrupa colecciones relacionadas.

What is NoSQL


Haciendo Peticiones a la Base de Datos

Como con cualquier base de datos, se usa un lenguaje especial para recuperar información de la base de datos. Justo como las bases de datos relacionales usan alguna variante de SQL, las bases de datos no relacionales, como MongoDB, usan NoSQL. NoSQL se refiere a cualquier forma de hacer una petición a una base de datos no SQL, significando que puede depender según la base de datos en uso.

Con MongoDB, las queries usan un array asociativo estructurado que contiene grupos de criterios para filtrar la información. Estos filtros ofrecen funcionalidades similares a una cláusula WHERE en SQL.

Para entender mejor las queries NoSQL, empecemos asumiendo que tenemos una base de datos con una colección de gente conteniendo los siguientes tres documentos:

What is NoSQL

Si quisiéramos construir un filtro para que sólo los documentos donde el apellido es "Sandler" fueran devueltos, nuestro filtro sería:

['last_name' => 'Sandler']

Como resultado a esta query, obtendríamos sólo el segundo documento.

Si quisiéramos que nos devolviera los documentos donde el género es masculino y el apellido es "Phillips", usaríamos el filtro:

['gender' => 'male', 'last_name' => 'Phillips']

Esto nos devolvería el primer documento.

Si quisiéramos recibir los documentos donde la edad es menor que 50, podríamos usar el siguiente filtro:

['age' => ['$lt'=>'50']]

Esto devolvería el segundo y tercer documento. Date cuenta de que usamos el operador $lt de forma anidada. Los operadores permiten filtros más complejos anidando condiciones. Una referencia completa de posibles operadores puede encontrarse en el siguiente link:

MongoDB Operator Reference