Escriu per cercar…

Agregacions

Una pipeline d'agregació processa els documents per etapes, i cada etapa transforma el que li arriba de l'anterior.

S'ensenya a
Bases de dadesDocumentDAMDAWDAW-BIO

Introducció

MongoDB ofereix operacions d’agregació mitjançant pipelines: una sèrie d’operacions que processen documents de manera seqüencial.

Una pipeline d’agregació es construeix com una successió declarativa d’etapes. Cada etapa inspecciona i transforma els documents a mesura que hi passen, i alimenta el resultat a l’etapa següent.

Els documents d’una col·lecció entren a la pipeline i passen per cada etapa. La sortida d’una etapa és l’entrada de la següent, i el resultat final surt pel final.

Les etapes poden fer operacions com aquestes:

  • Filtrar. S’assembla a una consulta: la llista de documents es redueix amb un conjunt de criteris.
  • Ordenar. Reordena els documents segons un camp.
  • Transformar. Canvia l’estructura dels documents: pots eliminar camps, canviar-los de nom o moure’ls a documents imbricats.
  • Agrupar. Processa diversos documents junts per formar un resultat resumit.

Una etapa no ha de produir el mateix nombre de documents que rep. De fet, la gràcia sovint és justament aquesta.

Entorn de treball

Continua al mateix contenidor que a Document:

shell
docker exec -it mongo mongosh

Treballaràs amb una col·lecció de ciutats:

Insereix les dades a la col·lecció cities de la base de dades test:

js
db.cities.drop()
db.cities.insertMany([
    {"name": "Seoul", "country": "South Korea", "continent": "Asia", "population": 25.674 },
    {"name": "Mumbai", "country": "India", "continent": "Asia", "population": 19.980 },
    {"name": "Lagos", "country": "Nigeria", "continent": "Africa", "population": 13.463 },
    {"name": "Beijing", "country": "China", "continent": "Asia", "population": 19.618 },
    {"name": "Shanghai", "country": "China", "continent": "Asia", "population": 25.582 },
    {"name": "Osaka", "country": "Japan", "continent": "Asia", "population": 19.281 },
    {"name": "Cairo", "country": "Egypt", "continent": "Africa", "population": 20.076 },
    {"name": "Tokyo", "country": "Japan", "continent": "Asia", "population": 37.400 },
    {"name": "Karachi", "country": "Pakistan", "continent": "Asia", "population": 15.400 },
    {"name": "Dhaka", "country": "Bangladesh", "continent": "Asia", "population": 19.578 },
    {"name": "Rio de Janeiro", "country": "Brazil", "continent": "South America", "population": 13.293 },
    {"name": "Sao Paulo", "country": "Brazil", "continent": "South America", "population": 21.650 },
    {"name": "Mexico City", "country": "Mexico", "continent": "North America", "population": 21.581 },
    {"name": "Delhi", "country": "India", "continent": "Asia", "population": 28.514 },
    {"name": "Buenos Aires", "country": "Argentina", "continent": "South America", "population": 14.967 },
    {"name": "Kolkata", "country": "India", "continent": "Asia", "population": 14.681 },
    {"name": "New York", "country": "United States", "continent": "North America", "population": 18.819 },
    {"name": "Manila", "country": "Philippines", "continent": "Asia", "population": 13.482 },
    {"name": "Chongqing", "country": "China", "continent": "Asia", "population": 14.838 },
    {"name": "Istanbul", "country": "Turkey", "continent": "Europe", "population": 14.751 }
])

Estàs llegint una vista prèvia.

Inicia sessió amb Google per llegir la pàgina completa.

Inicia sessió amb Google

Amb qualsevol compte de Google. Només et demanarem que acceptis les condicions del servei.