{"id":401,"date":"2023-09-04T11:15:56","date_gmt":"2023-09-04T09:15:56","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/?page_id=401"},"modified":"2025-07-26T18:12:17","modified_gmt":"2025-07-26T16:12:17","slug":"2-11-agregaciones-en-mongodb","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/2-11-agregaciones-en-mongodb\/","title":{"rendered":"2.11. Agregaciones en MongoDB"},"content":{"rendered":"<p>Para trabajar a fondo con los elementos de un <em>array<\/em> es mejor utilizar el <code>framework aggregation<\/code> que nos permite MongoDB muchas opciones y realizar tuber\u00edas <em>pipelines<\/em> para gestionar la informaci\u00f3n almacenada.<\/p>\n<p><strong>Operaciones de agregaciones<\/strong><\/p>\n<p>Las operaciones de agregaci\u00f3n son herramientas de MQL que nos ayudan a procesar documentos y a retornar resultados calculados. Las operaciones de agregaci\u00f3n se utilizan mayoritariamente para:<\/p>\n<ul>\n<li>Agrupar valores de varios documentos.<\/li>\n<li>Procesamiento y operaciones para el retorno de resultados.<\/li>\n<li>Analizar cambios de datos a lo largo del tiempo.<\/li>\n<\/ul>\n<p><strong>Tuber\u00edas y transformaciones<\/strong><\/p>\n<p>Para realizar el procesamiento de documentos, MongoDB se basa en el patr\u00f3n de filtro de tuber\u00eda, utilizado com\u00fanmente en arquitecturas de software. Este patr\u00f3n consta de una o m\u00e1s etapas, en donde cada etapa efect\u00faa una operaci\u00f3n con los datos de entrada, y la salida o resultado se la entrega a la siguiente etapa para su procesamiento.<\/p>\n<p>Para aplicar este patr\u00f3n, MongoDB utiliza una serie de operadores ya definidos para poder procesar documentos.<\/p>\n<p><strong>Los operadores m\u00e1s utilizados en tuber\u00edas:<\/strong><\/p>\n<ul>\n<li>Filtrado de documentos con criterios: <code>$match<\/code>.<\/li>\n<li>Orden de documentos: <code>$sort<\/code>.<\/li>\n<li>Selecci\u00f3n de campos en espec\u00edfico: <code>$project<\/code>.<\/li>\n<li>Agrupaci\u00f3n de documentos: <code>$group<\/code>.<\/li>\n<li>Sacar los elementos de un <em>array<\/em>: <code>$unwind<\/code>.<\/li>\n<\/ul>\n<p>Ser\u00eda necesario otro curso para profundizar en todas las opciones que nos ofrece MongoDB.<\/p>\n<div class=\"featured featured-grey\"><\/p>\n<p>Veamos un ejemplo de una operaci\u00f3n de agregaci\u00f3n. La funci\u00f3n <code>aggregate()<\/code>.<\/p>\n<p>Entre muchas otras opciones, <code>aggregate<\/code> nos permite sacar los elementos de un <em>array<\/em> con el operador <code>$unwind<\/code>, hacer agrupaciones con <code>$group<\/code> y contar con <code>$sum<\/code>.<\/p>\n<p>Vamos a contar cu\u00e1ntos genes contiene cada hebra del ADN del cromosoma 1.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">db.getCollection('chr1').aggregate([{$unwind:\"$knownGene\"},{$group:{_id:\"$knownGene.strand\",cantidad:{$sum:1}}}])<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">&gt; db.getCollection('chr1').aggregate([{$unwind: \"$knownGene\"},{$group:{_id: \"$knownGEne.strand\",cantidad:{$sum:1}}}]);\r\n{ \"_id\" : \"-\", \"cantidad\" : 3894 }\r\n{ \"_id\" : \"+\", \"cantidad\" : 4073 }\r\n&gt;\r\n&gt;\r\n&gt;<\/pre>\n<p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Para trabajar a fondo con los elementos de un array es mejor utilizar el framework aggregation que nos permite MongoDB muchas opciones y realizar tuber\u00edas pipelines para gestionar la informaci\u00f3n almacenada. Operaciones de agregaciones Las operaciones de agregaci\u00f3n son herramientas de MQL que nos ayudan a procesar documentos y a retornar resultados calculados. Las operaciones [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/pages\/401"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/comments?post=401"}],"version-history":[{"count":14,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/pages\/401\/revisions"}],"predecessor-version":[{"id":1056,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/pages\/401\/revisions\/1056"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/media?parent=401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}