jmoordb
  • Introduction
  • Overview
    • Copyleft
    • Prefacio
    • Creditos
    • Autor
    • Introduccion
  • Capitulo 1
    • Capítulo 1. Jmoordb
      • Base de Datos NoSQL
      • Esquema jmoordb
      • MongoDB
        • Instalar desde repositorio
        • Instalar MongoDB desde zip
        • Instalar Mongodb con Docker
        • Crear archivo mongodb.conf
        • Crear usuario de la base de datos
        • Conectarse a la base de datos con usuario y password
        • Optimizar MongoDB
        • Seguridad mongodb
      • OrientDB
      • Couchbase
      • Dependencias
      • MongoClientProvider
      • CouchbaseClientProvider
      • Bean Validation
      • Clases Internas
        • JmoordbNotifications.java
      • Interfaces
      • Configuracion del stack
      • Conexion a Base de datos
      • Conexión mediante Microservicios
  • Capitulo 2
    • Capítulo 2. Entidades y Repository
      • Entity
      • Anotaciones
      • Documento Embebido
      • Documento Embebido como Historial
      • Embebido con List de Referenciado
      • Documento Referenciado
      • Repository MongoDB
      • Repository Couchbase
      • Save
      • Update
      • Delete
      • Repository
  • Capitulo 3
    • Capítulo 3. Búsquedas
      • Búsquedas findById
      • findBySecondaryKey()
      • isFoundBySecondaryKey()
      • Busquedas find
      • Busquedas @Embedded
      • Busquedas @Referenced
      • Busquedas findAll
      • Búsquedas findBy
      • Busquedas findPagination
      • Busquedas findFirst
  • Capitulo Llaves primarias y secundarias
    • Capitulo Llaves primarias y secundarias
    • List<FieldBeans> fieldsOfBean()
    • Autoincrementable
  • Capitulo UserInfo
    • Capitulo UserInfo
  • Capitulo Profiles
    • Capitulo Profiles
  • Capitulo 4
    • Capitulo 4. Busquedas avanzadas
      • Buscar y actualizar automaticamente
      • Autoincrementable secundarios
      • Búsquedas Expresiones Regulares (Patrones Like)
      • Búsquedas por Texto findText
      • Busquedas con Helpers
      • Busquedas con Filter and Pagination
      • Full Text Search service
      • Busqueda entre enteros filterBetweenInteger
      • Busquedas en Rango de Doubles
      • Shell
  • Capitulo 5. Búsqueda en Documentos Embebidos
    • Capitulo 5. Búsqueda en Documentos Embebidos
      • Buscar elemento en un List<> Embebido/Referenciado
      • Filtros entre fechas en List<entity> embebidos
  • Capitulo 6. Busquedas en Fechas
    • Capitulo 6. Busquedas en Fechas
      • Busqueda entre Fechas filterBetweenDate()/filterBetweenDateWithoutHours()
      • betweendateWithFilter
      • Búsquedas por Día filterDayWithoutHour()
      • Disponible entre dos fechas en rangos de fechas inicial y final
      • Autocomplete disponibles en base a rango de dos fechas seleccionadas
      • Autocomplete en rangos de fechas excluyendo el mismo entity
      • Utilidades para Fechas
  • Capitulo 7 Aggregation
    • Capitulo 7 Aggregation
      • Introduccion Aggregation
      • Ejemplo $match
      • Ejemplo $group
      • Ejemplo $match, $group combinado
      • Ejemplo $lookup
      • Aggregation en ;MongoDB
  • Capitulo 8
    • Capitulo 8. Utilidades Bases datos
      • Restaurar base datos
      • internalQueryExecMaxBlockingSortBytes
      • Statistics
      • count
      • sizeOfPage
      • Indices
      • Crear Indice Primario
      • Lista de colecciones
      • Crear una coleccion
      • Eliminar una coleccion
      • Convertir Entity a documento
      • Eliminar base datos
      • Desconectar
      • Agregar campo a todos los documentos
      • ListOfPage
      • Importar un json a MongoDB
      • Migrar desde MySQL a MongoDB
      • updateOne
      • updateMany
      • Copiar base de datos
      • Migrar desde un archivo sql a mongodb
      • Cambiar el nombre de un campo
      • Exportar a csv
      • update field
      • Ver listado de colecciones
      • Eliminar un campo
      • Incrementar valor de campos
      • Tipos enteros
      • Agrupar y contar
      • iterate Cursor
      • Estadisticas
      • SQL vs MongoDB
      • not
      • Videos
      • Crear colleccion
      • Combinar bases de datos
      • sortConstructor
      • filterEQBuilder
      • documentToJson/jsonToDocument
      • Renombrar base de datos
      • Consultas $ne
      • Consulta entre Fechas
      • Consultas And
      • Consulta compleja
      • Contar registros complejos
      • Agregar un campo en una consulta compleja
      • Actualizacion compleja
      • Actualizar enteros mediante or
  • Capitulo 9 ACID Transactions Aun no implementado
    • Capitulo 9 ACID Transactions
      • ejemplos ACID
  • Capitulo 10. Bases datos sin esquema
    • Capitulo 10. Bases datos sin esquema
      • Insertar, Actualizar, Eliminar
  • Capítulo 11
    • Capitulo 11. Aplicación Java SE MongoDB
      • Base de datos
      • Proyecto Maven
      • Clase MongoClientProvider
      • Clase Entity
      • Clase Repository
      • Clase Controller
      • Clase Main
  • Capítulo 12
    • Capítulo 12 Java EE
      • Proyecto Maven Web
      • Dependencias web
      • Clase MongoClientProvider Web
      • Entity Web
      • Interfaces Web
      • Repository Web
      • Controller Web
      • Pagina Web
  • Capitulo 13. Couchbase
    • Capitulo 13 Couchbase
      • Base datos couchbase
      • Entity Couchbase
      • Dependencias Maven Couchbase
      • Couchabase Provider para el Ejemplo Couchbase
      • Repository Couchbase
      • Controller Couchbase
  • Capitulo 14 Auditoria
    • Capitulo 14 Auditoria
      • Introduccion
      • Implementación Repository de Auditoria
      • Historial de Acceso
      • Historial de Operaciones sobre documentos
      • Historial de Revisiones
    • SQL
  • Referencias
    • Referencias
      • Referencias importantes
Powered by GitBook
On this page
  • ·$match con $group contando los documentos en la colección
  • Salida
  • ·$match con $group sumando el costo
  • aggregateFromBuilder() /Suma la cantidad agrupado por activo
  • .aggregateFromBuilder()/Filtra, agrupa,suma y calcula el promedio

Was this helpful?

  1. Capitulo 7 Aggregation
  2. Capitulo 7 Aggregation

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()

 List<Document> documentList = Arrays.asList(
                    new Document("$match",
                            new Document("marca.idmarca", 9)),
                    new Document("$group",
                            new Document("_id", "$" + "activo").append("costototal", new Document("$sum", "$costo"))));
            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") + " Costo Total: " + a.get("costototal"));
                });

            }
  • 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

 List<Bson> builder = Arrays.asList(match(eq("marca.idmarca", 9)),
                    group("$activo", sum("total", "$cantidad"),
                            avg("promedio", "$costo")),
                    out("view"));
            List<JmoordbResult> list = articuloRepository.aggregateFromBuilder(builder);

            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") + " Total: " + a.get("total") + " Costo:" + a.get("promedio"));
                });

            }

Salida

aggregateFromBuilder() /Suma la cantidad agrupado por activo

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

 List<Bson> builder = Arrays.asList(
                    group("$activo", sum("total", "$cantidad"))

                    );
            List<JmoordbResult> list = articuloRepository.aggregateFromBuilder(builder);

            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") + " Total: " + a.get("total") );
                });

            }

.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

  List<Bson> builder = Arrays.asList(match(eq("activo", "si")),
                    group("$marca.idmarca", sum("total", "$cantidad"),
                            avg("promedio", "$costo")),
                    sort(orderBy(descending("_id")))
                   );
            List<JmoordbResult> list = articuloRepository.aggregateFromBuilder(builder);

            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") + "Total: " + a.get("total") + " Costo:" + a.get("promedio"));
                });

            }
PreviousEjemplo $groupNextEjemplo $lookup

Last updated 6 years ago

Was this helpful?