2.11. Agregacions a MongoDB
Per treballar a fons amb els elements d’un array és millor utilitzar el framework aggregatio
n que ens permet MongoDB, moltes opcions i realitzar tubs pipelines per gestionar la informació emmagatzemada.
Operacions d’agregacions
Les operacions d’agregació són eines de MQL que ens ajuden a processar documents i a retornar resultats calculats. Les operacions d’agregació s’utilitzen majoritàriament per:
- Agrupar valors de diversos documents.
- Processar i operar per al retorn de resultats.
- Analitzar canvis de dades al llarg del temps.
Tubs i transformacions
Per realitzar el processament de documents, MongoDB es basa en el patró de filtre de tubs, utilitzat comunament en arquitectures de programari. Aquest patró consta d’una o més etapes, on cada etapa realitza una operació amb les dades d’entrada, i la sortida o resultat l’entrega a la següent etapa per al seu processament.
Per aplicar aquest patró, MongoDB utilitza una sèrie d’operadors ja definits per poder processar documents.
Els operadors més utilizats en tubs:
- Filtratge de documents amb criteris:
$match
. - Ordre de documents:
$sort
. - Selecció de camps en específic:
$project
. - Agrupació de documents:
$group
. - Treure els elements d’un array:
$unwind
.
Caldria un altre curs per aprofundir en totes les opcions que ens ofereix MongoDB.
Vegem un exemple d’una operació d’agregació. La funció aggregate()
.
Entre moltes altres opcions, aggregate
ens permet treure els elements d’un array amb l’operador $unwind
, fer agrupacions amb $group
i comptar amb $sum
.
Anem a comptar quants gens conté cada fil de l’ADN del cromosoma 1.
db.getCollection('chr1').aggregate([{$unwind:"$knownGene"},{$group:{_id:"$knownGene.strand",cantidad:{$sum:1}}}])

Font: elaboració pròpia.