Agregarea în MongoDB este un instrument valoros pentru analizarea și filtrarea bazelor de date. Sistemul pipeline permite specificarea interogărilor, oferind rezultate extrem de personalizate.

Ce este agregarea în MongoDB?

MongoDB este o bază de date non-relațională și orientată spre documente, concepută pentru a fi utilizată cu cantități mari și diverse de date. Renunțând la tabelele rigide și utilizând tehnici precum sharding (stocarea datelor pe noduri diferite), soluția NoSQL poate fi scalată orizontal, rămânând în același timp extrem de flexibilă și rezistentă la defecțiuni.

Documentele în formatul binar JSON BSON sunt grupate în colecții și pot fi interogate și editate folosind limbajul de interogare MongoDB (MQL). Deși acest limbaj oferă multe opțiuni, nu este potrivit (sau poate nu este suficient de potrivit) pentru analiza datelor. De aceea, MongoDB oferă agregarea.

În informatică, acest termen se referă la diverse procese. În MongoDB, agregarea se referă la analiza și sintetizarea datelor folosind diverse operații pentru a obține un rezultat unic și clar. În timpul acestui proces, datele din unul sau mai multe documente sunt analizate și filtrate în funcție de factori definiți de utilizator.

În secțiunile următoare, nu numai că analizăm posibilitățile pe care agregarea MongoDB le oferă pentru analiza cuprinzătoare a datelor, dar oferim și exemple de utilizare a metodei aggregate ( ) cu un sistem de gestionare a bazelor de date.

De ce am nevoie pentru agregarea MongoDB?

Există doar câteva cerințe pentru utilizarea agregării în MongoDB. Metoda este executată în shell și funcționează conform unor reguli logice pe care le puteți adapta pentru a răspunde nevoilor analizei dvs.

Pentru a utiliza agregarea în Mongo DB, trebuie să aveți MongoDB deja instalat pe computer. Dacă nu este, puteți afla cum să descărcați, să instalați și să rulați baza de date în tutorialul nostru complet despre MongoDB.

De asemenea, ar trebui să utilizați un firewall puternic și să vă asigurați că baza de date este configurată în conformitate cu toate standardele de securitate actuale. Pentru a rula agregarea în MongoDB, trebuie să aveți drepturi de administrare.

Baza de date funcționează pe toate platformele, astfel încât pașii descriși mai jos se aplică tuturor sistemelor de operare.

Ce este pipeline-ul în cadrul de agregare MongoDB?

În MongoDB, puteți efectua căutări sau interogări simple, iar baza de date afișează imediat rezultatele. Cu toate acestea, această metodă este foarte limitată, deoarece poate afișa numai rezultatele care există deja în documentele stocate. Acest tip de interogare nu este destinat analizei aprofundate, modelelor recurente sau obținerii de informații suplimentare.

Uneori, pentru a trage concluzii semnificative, trebuie luate în considerare diferite surse dintr-o bază de date. Agregarea MongoDB este utilizată în astfel de situații. Pentru a obține astfel de rezultate, metoda aggregate ( ) utilizează pipeline-uri.

Rolul conductei

Conductele de agregare din MongoDB sunt procese în care datele existente sunt analizate și filtrate cu ajutorul diverselor etape, pentru a afișa rezultatul căutat de utilizatori. Aceste etape sunt denumite stadii. În funcție de cerințe, pot fi inițiate una sau mai multe stadii. Acestea sunt executate una după alta și modifică datele inițiale introduse, astfel încât rezultatul (informațiile căutate) să poată fi afișat la final.

În timp ce intrarea este alcătuită din numeroase date, ieșirea (adică rezultatul final) este singulară. Vom explica diferitele etape ale agregării MongoDB mai târziu în această secțiune.

Sintaxa conductei de agregare MongoDB

În primul rând, merită să aruncăm o scurtă privire asupra sintaxei agregării în MongoDB. Metoda este întotdeauna structurată după același format și poate fi adaptată cerințelor dvs. specifice. Structura de bază arată astfel:

db.collection_name.aggregate ( pipeline, options )
shell

Aici, collection_name este numele colecției în cauză. Etapele agregării MongoDB sunt enumerate la pipeline. options poate fi utilizat pentru parametri opționali suplimentari care definesc ieșirea.

Etapele conductei

Există numeroase etape pentru pipeline-ul de agregare în MongoDB. Majoritatea dintre ele pot fi utilizate de mai multe ori într-un pipeline. Enumerarea tuturor opțiunilor ar depăși scopul acestui articol, mai ales că unele dintre ele sunt necesare doar pentru operațiuni foarte specifice. Cu toate acestea, pentru a vă face o idee despre etape, vom enumera aici câteva dintre cele mai frecvent utilizate:

  • $count: Această etapă vă oferă o indicație cu privire la numărul de documente BSON care au fost luate în considerare pentru etapa sau etapele din fluxul de lucru.
  • $group: Această etapă sortează și grupează documentele în funcție de anumiți parametri.
  • $limit: Limitează numărul de documente transmise către etapa următoare din flux.
  • $match: Cu etapa $match, limitați documentele care sunt utilizate pentru etapa următoare.
  • $out: Această etapă este utilizată pentru a include rezultatele agregării MongoDB în colecție. Această etapă poate fi utilizată numai la sfârșitul unui pipeline.
  • $project: Utilizați $project pentru a selecta câmpuri specifice dintr-o colecție.
  • $skip: Această etapă ignoră un anumit număr de documente. Puteți specifica acest lucru cu o opțiune.
  • $sort: Această operațiune sortează documentele din colecția utilizatorului. Cu toate acestea, documentele nu sunt modificate în afara acestei operațiuni.
  • $unset: $unset exclude anumite câmpuri. Face opusul a ceea ce face $project.

Un exemplu de agregare în MongoDB

Pentru a vă ajuta să înțelegeți mai bine cum funcționează agregarea în MongoDB, vă vom arăta câteva exemple de etape diferite și cum să le utilizați. Pentru a utiliza agregarea MongoDB, deschideți shell-ul ca administrator. În mod normal, va fi afișată mai întâi o bază de date de test. Dacă doriți să utilizați o altă bază de date, utilizați comanda use.

Pentru acest exemplu, să ne imaginăm o bază de date care conține datele clienților care au achiziționat un anumit produs. Pentru a simplifica lucrurile, această bază de date conține doar zece documente, toate structurate în același mod:

{
	"name" : "Smith",
	"city" : "Glasgow",
	"country" : "Scotland",
	"quantity" : 14
}
shell

Au fost incluse următoarele informații despre clienți: numele, locul de reședință, țara și numărul de produse achiziționate.

Dacă doriți să încercați agregarea în MongoDB, puteți utiliza metoda insertMany ( ) pentru a adăuga toate documentele cu date despre clienți la colecția numită „clienți”:

db.customers.insertMany ( [
	{ "name" : "Smith", "city" : "Glasgow", "country" : "Scotland", "quantity" : 14 },
	{ "name" : "Meyer", "city" : "Hamburg", "country" : "Germany", "quantity" : 26 },
	{ "name" : "Lee", "city" : "Birmingham", "country" : "England", "quantity" : 5 },
	{ "name" : "Rodriguez", "city" : "Madrid", "country" : "Spain", "quantity" : 19 },
	{ "name" : "Nowak", "city" : "Krakow", "country" : "Poland", "quantity" : 13 },
{ "name" : "Rossi", "city" : "Milano", "country" : "Italy", "quantity" : 10 },
{ "name" : "Arslan", "city" : "Ankara", "country" : "Turkey", "quantity" : 18 },
{ "name" : "Martin", "city" : "Lyon", "country" : "France", "quantity" : 9 },
{ "name" : "Mancini", "city" : "Rome", "country" : "Italy", "quantity" : 21 },
{ "name" : "Schulz", "city" : "Munich", "country" : "Germany", "quantity" : 2 }
] )
shell

Va fi afișată o listă cu ID-urile obiectelor pentru fiecare document în parte.

Cum se utilizează $match

Pentru a ilustra posibilitățile de agregare în MongoDB, vom aplica mai întâi etapa $match colecției noastre „clienți”. Fără parametri suplimentari, aceasta ar afișa pur și simplu lista completă a datelor clienților enumerate mai sus.

În exemplul următor, însă, i-am dat instrucțiuni să ne arate doar clienții din Italia. Iată comanda:

db.customers.aggregate ( [
	{ $match : { "country" : "Italy" } }
] )
shell

Acum vi se vor afișa numai ID-urile obiectelor și informațiile referitoare la cei doi clienți din Italia.

Utilizați $sort pentru o imagine de ansamblu mai bună

Dacă doriți să organizați baza de date cu clienții, puteți utiliza etapa $sort. În exemplul următor, instruim sistemul să sorteze toate datele clienților în funcție de numărul de unități achiziționate, începând cu cel mai mare număr. Intrarea arată astfel:

db.customers.aggregate ( [
	{ $sort : { "quantity" : -1 } }
] )
shell

Limitați ieșirea cu $project

Cu etapele utilizate până acum, veți observa că rezultatul este relativ extins. De exemplu, pe lângă informațiile propriu-zise din documente, este afișat întotdeauna și ID-ul obiectului. Puteți utiliza $project în pipeline-ul de agregare MongoDB pentru a determina ce informații trebuie afișate. Pentru a face acest lucru, setăm valoarea 1 pentru câmpurile obligatorii și 0 pentru câmpurile care nu trebuie incluse în rezultat. În exemplul nostru, dorim să vedem doar numele clientului și numărul de produse achiziționate. Pentru a face acest lucru, introducem următoarele:

db.customers.aggregate ( [
	{ $project : { _id : 0, name : 1, city : 0, country : 0, quantity : 1 } }
] )
shell

Combinați mai multe etape cu agregarea în MongoDB

Agregarea MongoDB vă oferă, de asemenea, opțiunea de a aplica mai multe etape succesive. Acestea sunt apoi executate una după alta, iar la final se obține un rezultat care ia în considerare toți parametrii doriti. De exemplu, dacă doriți să afișați numai numele și achizițiile clienților scoțieni în ordine descrescătoare, puteți utiliza etapele descrise mai sus, după cum urmează:

db.customers.aggregate ( [
	{ $match : { "country" : "Scotland" } }
	{ $project : { _id : 0, name : 1, city : 0, country : 0, quantity : 1 } }
	{ $sort : { "quantity" : -1 } }
] )
shell
Mergi la meniul principal