Agregación de grupos MongoDB

Agregacion De Grupos Mongodb



La agregación es el procedimiento de extracción de datos de una colección MongoDB. Procesa numerosos documentos y proporciona resultados estimados. La agregación en MongoDB tiene varios operadores y métodos que realizan diversas tareas. Entre esos operadores, el operador $group agrupa los documentos para cada agrupación única y los organiza de acuerdo con una expresión definida. El operador de grupo es significativo en MongoDB ya que facilita una amplia gama de manipulaciones de datos. La agregación de $group en el ejemplo de MongoDB junto con diferentes acumuladores se proporciona a continuación.

¿Cómo funciona la agregación de grupos en MongoDB?

El operador $group debe usarse para agrupar los documentos de entrada de acuerdo con la expresión _id especificada. A continuación, debe devolver un solo documento con los valores totales para cada grupo por separado. Para comenzar con la implementación, hemos creado la colección 'Libros' en MongoDB. Después de la creación de la colección 'Libros', hemos insertado los documentos que están asociados a los diferentes campos. Los documentos se insertan en la colección a través del método insertMany(), ya que la consulta que se ejecutará se muestra a continuación.

>db.Libros.insertarMuchos([

    {
_id:1,
título: 'Ana Karenina',
precio: 290,
año: 1879,
order_status: 'En stock',
autor: {
'name':'León Tolstoi'
                }
    },
     {
_id:2,
título: 'Matar a un ruiseñor',
precio: 500,
año: 1960,
order_status: 'agotado',
autor: {
'nombre':'Harper Lee'
                }
    },
     {
_id:3,
título: 'El hombre invisible',
precio: 312,
año: 1953,
order_status: 'En stock',
autor: {
'nombre':'Ralph Ellison'
                }
    },
     {
_id:4,
título: 'Amado',
precio: 370,
año: 1873,
order_status: 'out_of_stock',
autor: {
'nombre':'Toni Morrison'
                }
    },
     {
_id:5,
título: 'Todo se desmorona',
precio: 200,
año: 1958,
order_status: 'En stock',
autor: {
'name':'Chinua Achebe'
                }
    },
     {
_id:6,
título: 'El Color Púrpura',
precio: 510,
año: 1982,
order_status: 'agotado',
autor: {
'nombre':'Alice Walker'
                }
    }
])

Los documentos se almacenan con éxito en la colección 'Libros' sin encontrar ningún error porque la salida se reconoce como 'verdadera'. Ahora, vamos a utilizar estos documentos de la colección 'Libros' para realizar la agregación '$grupo'.









Ejemplo # 1: uso de la agregación de $group



El uso simple de la agregación de $group se demuestra aquí. La consulta agregada ingresa primero el operador '$grupo' y luego el operador '$grupo' toma las expresiones para generar los documentos agrupados.





>db.Libros.agregados([

{ $grupo:{ _id:'$autor.nombre'} }

])

La consulta anterior del operador $group se especifica con el campo '_id' para calcular los valores totales de todos los documentos de entrada. Luego, el campo “_id” se asigna con “$author.name” que forma un grupo diferente en el campo “_id”. Se devolverán los valores separados de $author.name porque no calculamos ningún valor acumulado. La ejecución de la consulta agregada $group tiene el siguiente resultado. El campo _id tiene valores de author.names.



Ejemplo n.º 2: uso de $group Aggregation con $push Accumulator

El ejemplo de agregación de $group usa cualquier acumulador que ya se mencionó anteriormente. Pero podemos usar los acumuladores en la agregación de $group. Los operadores acumuladores son aquellos que se utilizan en los campos del documento de entrada distintos de los que están “agrupados” bajo “_id”. Supongamos que queremos insertar los campos de la expresión en una matriz, luego se llama al acumulador '$ empujar' en el operador '$ grupo'. El ejemplo le ayudará a entender más claramente el acumulador “$push” del “$grupo”.

>db.Libros.agregados(

[

{ $grupo: { _id: '$_id', año: { $push: '$año' } } }

]

).bastante();

Aquí, queremos agrupar la fecha del año de publicación de los libros dados en la matriz. La consulta anterior se debe aplicar para lograr esto. La consulta de agregación se proporciona con la expresión donde el operador '$grupo' toma la expresión de campo '_id' y la expresión de campo 'año' para obtener el año del grupo usando el acumulador de $push. El resultado obtenido de esta consulta específica crea la matriz de campos de año y almacena el documento agrupado devuelto en su interior.

Ejemplo # 3: Uso de $group Aggregation con el Acumulador “$min”

A continuación, tenemos el acumulador '$min' que se utiliza en la agregación de $group para obtener el valor mínimo de coincidencia de cada documento de la colección. La expresión de consulta para el acumulador $min se proporciona a continuación.

>db.Libros.agregados([

{
$grupo:{
_identificación:{
título: '$título',
estado_pedido: '$estado_pedido'
        },
minPrecio:{$min: '$precio'}
}
}
])

La consulta tiene la expresión de agregación “$group” donde hemos agrupado el documento para los campos “title” y “order_status”. Luego, proporcionamos el acumulador de $min que agrupaba los documentos al obtener los valores de precio mínimo de los campos no agrupados. Cuando ejecutamos esta consulta del acumulador de $min a continuación, devuelve los documentos agrupados por título y order_status en una secuencia. El precio mínimo aparece primero y el precio más alto del documento se coloca en último lugar.

Ejemplo # 4: Usar la Agregación de $group con el Acumulador de $sum

Para obtener la suma de todos los campos numéricos mediante el operador $group, se implementa la operación del acumulador $sum. Los valores no numéricos de las colecciones son considerados por este acumulador. Además, estamos usando la agregación de $match aquí con la agregación de $group. La agregación $match acepta las condiciones de consulta que se proporcionan en un documento y pasa el documento coincidente a la agregación $group, que luego devuelve la suma del documento para cada grupo. Para el acumulador $sum, la consulta se presenta a continuación.

>db.Libros.agregados([

{ $coincidencia:{ order_status:'En stock'}},

{ $grupo:{ _id:'$autor.nombre', totalBooks: { $sum:1 } }

}])

La consulta de agregación anterior comienza con el operador $match que coincide con todos los 'order_status' cuyo estado es 'En stock' y se pasa al $group como entrada. Luego, el operador $group tiene la expresión del acumulador $sum que genera la suma de todos los libros en stock. Tenga en cuenta que “$sum:1” agrega 1 a cada documento que pertenece al mismo grupo. El resultado aquí mostró solo dos documentos agrupados que tienen el 'order_status' asociado con 'En stock'.

Ejemplo # 5: Use la Agregación $group con la Agregación $sort

El operador $group aquí se usa con el operador '$sort' que se usa para ordenar los documentos agrupados. La siguiente consulta tiene tres pasos para la operación de clasificación. Primero está la etapa $match, luego la etapa $group y la última es la etapa $sort que ordena el documento agrupado.

>db.Libros.agregados([

{ $coincidencia:{ order_status:'out-of-stock'}},

{ $grupo:{ _id:{ nombre del autor :'$autor.nombre'}, totalBooks: { $suma:1} } },

{ $ordenar:{ nombre del autor:1}}

])

Aquí, hemos obtenido el documento coincidente cuyo 'order_status' está agotado. Luego, el documento coincidente se ingresa en la etapa $group que agrupó el documento con el campo 'authorName' y 'totalBooks'. La expresión $group está asociada con el acumulador $sum al número total de libros 'agotados'. Luego, los documentos agrupados se ordenan con la expresión $sort en orden ascendente, ya que '1' aquí indica el orden ascendente. El documento de grupo ordenado en el orden especificado se obtiene en el siguiente resultado.

Ejemplo n.º 6: utilice la agregación de $group para obtener un valor distinto

El procedimiento de agregación también agrupa los documentos por ítem utilizando el operador $group para extraer los distintos valores de ítem. Tengamos la expresión de consulta de esta declaración en MongoDB.

>db.Books.aggregate( [ { $grupo : { _id : '$título' } } ] ).pretty();

La consulta de agregación se aplica a la colección Books para obtener el valor distintivo del documento de grupo. El grupo $ aquí toma la expresión _id que genera los distintos valores como hemos ingresado en el campo 'título'. El resultado del documento de grupo se obtiene al ejecutar esta consulta que tiene el grupo de nombres de títulos en el campo _id.

Conclusión

La guía tenía como objetivo aclarar el concepto del operador de agregación $group para agrupar el documento en la base de datos MongoDB. El enfoque agregado de MongoDB mejora los fenómenos de agrupación. La estructura sintáctica del operador $group se demuestra con los programas de ejemplo. Además del ejemplo básico de los operadores $group, también hemos empleado este operador con algunos acumuladores como $push, $min, $sum y operadores como $match y $sort.