Ejemplo $match, $group combinado

·$match con $group contando los documentos en la colección

Filtrar los articulos con marca.idmarca=9 los agrupa por activo y cuenta la cantidad

Orden

Salida

db.articulo.aggregate([ {"$match" :{"marca.idmarca":9}}, {"$group":{_id:{"activo":"$activo"},cantidad:{$sum",1}}} ])

{ "_id" : { "activo" : "si" }, "cantidad" : 95} { "_id" : { "activo" : "no" }, "cantidadl" : 2 }

  • aggregateFromDocument()

  • Definir el filtro mediante $match donde se filtraran los articulos con marca.idmarca=9

  • Agrupar por el campo activo $group

  • Contar el numero de documentos cantidad mediante $sum,1

 List<Document> documentList = Arrays.asList(
   new Document("$match",
   new Document("marca.idmarca", 9)),
   new Document("$group",
   new Document("_id", "$" + "activo").append("cantidad", new Document("$sum", 1))));
List<JmoordbResult> list = articuloRepository.aggregateFromDocument(documentList);

if (list == null || list.isEmpty()) {
System.out.println("No hay articulos con esa condicion");
} else {

list.forEach((a) -> {
System.out.println("_id " + a.get("_id") + " Cantidad: " + a.get("cantidad"));
});

Salida

·$match con $group sumando el costo

  • Filtrar los articulos con marca.idmarca=9 los agrupa por activo y suma el $costo

Orden

Salida

db.articulo.aggregate([ {"$match" :{"marca.idmarca":9}}, {"$group":{_id:{"activo":"$activo"},costo_total:{$sum:"$costo"}}} ])

{ "_id" : { "activo" : "si" }, "costo_total" : 13844.6 } { "_id" : { "activo" : "no" }, "costo_total" : 370 }

  • aggregateFromDocument()

  • aggregateFromBuilder()

  • Filtra por marca.idmarca = 9

  • Agrupa por el campo activo

  • Suma el campo cantidad

  • calcula el promedio del costo

  • Lo guarda en una coleccion llamada view

Salida

aggregateFromBuilder() /Suma la cantidad agrupado por activo

  • Agruparlo por activo y totalizar el valor del campo cantidad de la colección

.aggregateFromBuilder()/Filtra, agrupa,suma y calcula el promedio

  • Filtrar por activo = si

  • agruparlo por marca.idmarca que es un embebido

  • sumar la cantidad en la variable total

  • calcular el promedio del costo en la variable promedio

Last updated

Was this helpful?