MongoDB Aggregation Framework (parte 3)

MongoDBAggregationFrameworkExamples
Parte III del post MongoDB Aggregation Framework

Ejemplos

Después de hacer una pequeña introducción teórica a cuál es la filosofía del Aggregation Framework, y las posibilidades que nos ofrece, vamos a comenzar con lo que verdaderamente nos interesa, los ejemplos.

Single purpose aggregation operations

Count y Distinct son a los que más acostumbrados podemos estar por su similitud con el mundo sql.

Vamos a insertar los siguientes documentos para poder seguir los ejemplos:

Count

Como os podéis imaginar esta operación nos devuelve el número de documentos que cumplen una condición.

Distinct

Sirve para obtener los distintos valores de un campo, por ejemplo:

Group

En el siguiente ejemplo obtenemos como resultado el sumatorio del campo ‘score’, por cada user_id exceptuando aquellos documentos en los que ese campo sea menor a 6:

Esta consulta se puede hacer también utilizando los operadores $match, $group y el acumulador $sum.

$project

Utilizaremos este operador para seleccionar los campos que queremos obtener. En la siguiente consulta no mostraremos el campo ‘_id’ ni el campo ‘score’.

$match

Sirve para expresar las condiciones que se deben cumplir:

$sort

En este ejemplo vemos que nuestra consulta encadena dos ‘stages’. En el primero seleccionamos los documentos a tratar con $match y sólo los que cumplen esa condición entran al segundo, que se encarga de ordenarlos según el valor del campo ‘score’. El valor 1 ordena los resultados en orden ascendente y el valor -1 en orden descendente:

$group

Utilizaremos acumuladores ($sum, $avg, etc) a través de $group:

Así simplemente hemos sumado el valor del campo ‘score’ para todos los documentos. Vamos ahora a agrupar por user_id:

$match utilizado como having

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

12 − 2 =