{"id":635,"date":"2023-10-23T11:01:36","date_gmt":"2023-10-23T09:01:36","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/?page_id=635"},"modified":"2025-07-26T19:01:12","modified_gmt":"2025-07-26T17:01:12","slug":"2-11-agregacions-a-mongodb","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/2-11-agregacions-a-mongodb\/","title":{"rendered":"2.11. Agregacions a MongoDB"},"content":{"rendered":"<p>Per treballar a fons amb els elements d\u2019un <em>array<\/em> \u00e9s millor utilitzar el <code>framework aggregatio<\/code>n que ens permet MongoDB, moltes opcions i realitzar tubs <em>pipelines<\/em> per gestionar la informaci\u00f3 emmagatzemada.<\/p>\n<p><strong>Operacions d&#8217;agregacions<\/strong><\/p>\n<p>Les operacions d\u2019agregaci\u00f3 s\u00f3n eines de MQL que ens ajuden a processar documents i a retornar resultats calculats. Les operacions d\u2019agregaci\u00f3 s\u2019utilitzen majorit\u00e0riament per:<\/p>\n<ul>\n<li>Agrupar valors de diversos documents.<\/li>\n<li>Processar i operar per al retorn de resultats.<\/li>\n<li>Analitzar canvis de dades al llarg del temps.<\/li>\n<\/ul>\n<p><strong>Tubs i transformacions<\/strong><\/p>\n<p>Per realitzar el processament de documents, MongoDB es basa en el patr\u00f3 de filtre de tubs, utilitzat comunament en arquitectures de programari. Aquest patr\u00f3 consta d\u2019una o m\u00e9s etapes, on cada etapa realitza una operaci\u00f3 amb les dades d\u2019entrada, i la sortida o resultat l\u2019entrega a la seg\u00fcent etapa per al seu processament.<\/p>\n<p>Per aplicar aquest patr\u00f3, MongoDB utilitza una s\u00e8rie d\u2019operadors ja definits per poder processar documents.<\/p>\n<p><strong>Els operadors m\u00e9s utilizats en tubs:<\/strong><\/p>\n<ul>\n<li>Filtratge de documents amb criteris: <code>$match<\/code>.<\/li>\n<li>Ordre de documents: <code>$sort<\/code>.<\/li>\n<li>Selecci\u00f3 de camps en espec\u00edfic: <code>$project<\/code>.<\/li>\n<li>Agrupaci\u00f3 de documents: <code>$group<\/code>.<\/li>\n<li>Treure els elements d\u2019un <em>array<\/em>: <code>$unwind<\/code>.<\/li>\n<\/ul>\n<p>Caldria un altre curs per aprofundir en totes les opcions que ens ofereix MongoDB.<\/p>\n<div class=\"featured featured-grey\"><\/p>\n<p>Vegem un exemple d\u2019una operaci\u00f3 d\u2019agregaci\u00f3. La funci\u00f3 <code>aggregate()<\/code>.<\/p>\n<p>Entre moltes altres opcions, <code>aggregate<\/code>\u00a0ens permet treure els elements d\u2019un <em>array<\/em> amb l\u2019operador <code>$unwind<\/code>, fer agrupacions amb <code>$group<\/code> i comptar amb <code>$sum<\/code>.<\/p>\n<p>Anem a comptar quants gens cont\u00e9 cada fil de l\u2019ADN 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\" : \"-\", \"quantitat\" : 3894 }\r\n{ \"_id\" : \"+\", \"quantitat\" : 4073 }\r\n&gt;\r\n&gt;\r\n&gt;<\/pre>\n<p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Per treballar a fons amb els elements d\u2019un array \u00e9s millor utilitzar el framework aggregation que ens permet MongoDB, moltes opcions i realitzar tubs pipelines per gestionar la informaci\u00f3 emmagatzemada. Operacions d&#8217;agregacions Les operacions d\u2019agregaci\u00f3 s\u00f3n eines de MQL que ens ajuden a processar documents i a retornar resultats calculats. Les operacions d\u2019agregaci\u00f3 s\u2019utilitzen majorit\u00e0riament [&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\/wp-json\/wp\/v2\/pages\/635"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/comments?post=635"}],"version-history":[{"count":7,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/635\/revisions"}],"predecessor-version":[{"id":1063,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/635\/revisions\/1063"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/media?parent=635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}