Kuidas analüüsida ja filtreerida andmebaase MongoDB agregatsiooni abil
MongoDB-s on agregatsioon väärtuslik vahend andmebaaside analüüsimiseks ja filtreerimiseks. Torustiku süsteem võimaldab määratleda päringuid, mis võimaldab saada väga kohandatud väljundeid.
Mis on agregatsioon MongoDB-s?
MongoDB on mittesuheline ja dokumentidele orienteeritud andmebaas, mis on loodud kasutamiseks suurte ja mitmekesiste andmehulkade puhul. Loobudes jäikadest tabelitest ja kasutades selliseid tehnikaid nagu sharding (andmete salvestamine erinevatesse sõlmedesse), suudab NoSQL-lahendus horisontaalselt skaleeruda, jäädes samal ajal väga paindlikuks ja vastupidavaks riketele.
BSON-vormingus (binary JSON format) dokumendid on koondatud kogudesse ja neid saab otsida ja redigeerida MongoDB päringukeele (MQL) abil. Kuigi see keel pakub palju võimalusi, ei sobi see andmete analüüsimiseks (või vähemalt ei sobi piisavalt hästi). Seetõttu pakub MongoDB agregatsiooni.
Arvutiteaduses viitab see termin mitmesugustele protsessidele. MongoDB-s tähendab agregatsioon andmete analüüsimist ja kokkuvõtmist, kasutades selleks mitmesuguseid operatsioone, et saada üks selge tulemus. Selle protsessi käigus analüüsitakse ja filtreeritakse ühe või mitme dokumendi andmeid vastavalt kasutaja määratud teguritele.
Järgmistes jaotistes vaatleme mitte ainult MongoDB agregatsiooni pakutavaid võimalusi põhjalikuks andmete analüüsiks, vaid toome ka näiteid selle kohta, kuidas saate aggregate ( ) meetodit andmebaasi haldussüsteemis kasutada.
Mida ma vajan MongoDB agregatsiooni jaoks?
MongoDB-s agregatsiooni kasutamiseks on vaid mõned nõuded. Meetod täidetakse shellis ja töötab loogiliste reeglite järgi, mida saab kohandada vastavalt oma analüüsi vajadustele.
Mongo DB-s koondamise kasutamiseks peab MongoDB olema juba teie arvutisse installitud. Kui see pole veel installitud, leiate meie põhjalikust MongoDB-õpetusest teavet selle allalaadimise, installimise ja käivitamise kohta.
Samuti peaksite kasutama võimsat tulemüüri ja veenduma, et teie andmebaas on seadistatud vastavalt kõigile kehtivatele turvastandarditele. MongoDB-s koondamise käivitamiseks peate omama administraatoriõigusi.
Andmebaas töötab kõigil platvormidel, seega allpool kirjeldatud sammud kehtivad kõikide operatsioonisüsteemide puhul.
Mis on MongoDB agregatsiooni raamistiku torujuhtme?
MongoDB-s saate teha lihtsaid otsinguid või päringuid, mille tulemused kuvatakse andmebaasis kohe. See meetod on aga väga piiratud, kuna see suudab kuvada ainult tulemusi, mis on juba salvestatud dokumentides olemas. Sellist tüüpi päringuid ei ole mõeldud põhjalikuks analüüsiks, korduvate mustrite leidmiseks ega täiendava teabe saamiseks.
Mõnikord on vaja arvesse võtta andmebaasi erinevaid allikaid, et teha mõtestatud järeldusi. Sellistes olukordades kasutatakse MongoDB agregatsiooni. Selliste tulemuste saavutamiseks kasutab aggregate ( ) meetod torustikke.
Torujuhtme roll
MongoDB-s on koondamisprotsessid protsessid, mille käigus analüüsitakse ja filtreeritakse olemasolevaid andmeid mitme etapi abil, et kuvada kasutajate soovitud tulemus. Neid etappe nimetatakse faasideks. Sõltuvalt nõuetest võib algatada ühe või mitu faasi. Need faasid viiakse läbi üksteise järel ja muudavad algset sisendit nii, et lõpuks saaks kuvada väljundit (otsitavat teavet).
Kuigi sisend koosneb paljudest andmetest, on väljund (st lõpptulemus) ühtne. MongoDB agregatsiooni erinevaid etappe selgitame käesoleva jaotise hilisemas osas.
MongoDB koondamisprotsessi süntaks
Esmalt tasub lühidalt tutvuda MongoDB-s kasutatava agregatsiooni süntaksiga. Meetod on alati üles ehitatud sama formaadi järgi ja seda saab kohandada vastavalt teie konkreetsetele nõudmistele. Põhistruktuur näeb välja järgmine:
db.collection_name.aggregate ( pipeline, options )shellSiin on collection_name kõnealuse kogumiku nimi. MongoDB koondamise etapid on loetletud punktis pipeline. options võib kasutada täiendavate valikuliste parameetrite jaoks, mis määravad väljundi.
Torujuhtme etapid
MongoDB-s on agregatsiooni torujuhtme jaoks mitmeid etappe. Enamikku neist saab torujuhtmes mitu korda kasutada. Kõigi võimaluste loetlemine ületaks käesoleva artikli raamid, eriti kuna mõned neist on vajalikud ainult väga spetsiifiliste toimingute jaoks. Et anda teile ettekujutus etappidest, loetleme siin mõned kõige sagedamini kasutatavad:
$count: See etapp annab teile ülevaate sellest, kui palju BSON-dokumente on arvestatud selle etapi või etappide jaoks töös.$group: Selles etapis sorteeritakse ja koondatakse dokumendid teatud parameetrite alusel.$limit: Piirab järgmisesse etappi edastatavate dokumentide arvu.$match: $match etapiga piirab dokumente, mida kasutatakse järgmises etapis.$out: Seda etappi kasutatakse MongoDB koondamise tulemuste lisamiseks kogumisse. Seda etappi saab kasutada ainult protsessi lõpus.$project: Kasutage $project, et valida kogust konkreetsed väljad.$skip: Selles etapis ignoreeritakse teatud arv dokumente. Seda saab määrata valikuga.$sort: See operatsioon sorteerib dokumendid kasutaja kogus. Dokumendid ei muutu aga muul viisil.$unset: $unset välistab teatud väljad. See teeb vastupidist sellele, mida teeb $project.
Näide koondamisest MongoDB-s
Et aidata teil paremini mõista, kuidas MongoDB-s agregatsioon toimib, näitame teile mõned näited erinevatest etappidest ja nende kasutamisest. MongoDB agregatsiooni kasutamiseks avage shell administraatori õigustega. Tavaliselt kuvatakse esmalt testandmebaas. Kui soovite kasutada teist andmebaasi, kasutage käsku use.
Selle näite puhul kujutame ette andmebaasi, mis sisaldab andmeid klientide kohta, kes on ostnud konkreetse toote. Lihtsuse huvides on selles andmebaasis vaid kümme dokumenti, mis on kõik ühesuguse struktuuriga:
{
"name" : "Smith",
"city" : "Glasgow",
"country" : "Scotland",
"quantity" : 14
}shellKlientide kohta on lisatud järgmine teave: nende nimi, elukoht, riik ja ostetud toodete arv.
Kui soovite proovida agregatsiooni MongoDB-s, võite kasutada meetodit insertMany ( ), et lisada kõik kliendiandmetega dokumendid kogumisse nimega „customers”:
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 }
] )shellKuvatakse iga dokumendi objektide ID-de loend.
Kuidas kasutada $match
MongoDB-s koondamise võimaluste illustreerimiseks rakendame esmalt $match-etappi meie „kliendid” kogumile. Ilma täiendavate parameetriteta väljastaks see lihtsalt eespool loetletud klientide andmete täieliku nimekirja.
Järgmises näites oleme aga andnud talle juhised näidata ainult Itaalia kliente. Siin on käsk:
db.customers.aggregate ( [
{ $match : { "country" : "Italy" } }
] )shellNüüd näidatakse teile ainult kahe Itaalia kliendi objektide ID-d ja teave.
Kasutage $sort parema ülevaate saamiseks
Kui soovite oma klientide andmebaasi korrastada, võite kasutada $sort-etappi. Järgmises näites anname süsteemile korralduse sorteerida kõik klientide andmed ostetud ühikute arvu järgi, alustades suurimast arvust. Sisend näeb välja järgmine:
db.customers.aggregate ( [
{ $sort : { "quantity" : -1 } }
] )shellPiirata väljundit $project abil
Seni kasutatud etappide puhul näete, et väljund on suhteliselt ulatuslik. Näiteks lisaks dokumentides sisalduvale tegelikule teabele väljastatakse alati ka objekti ID. MongoDB koondamisprotsessis saate kasutada $project, et määrata, milline teave väljastatakse. Selleks määrame nõutavatele väljadele väärtuse 1 ja väljadele, mida väljundisse lisada ei ole vaja, väärtuse 0. Meie näites soovime näha ainult kliendi nime ja ostetud toodete arvu. Selleks sisestame järgmise:
db.customers.aggregate ( [
{ $project : { _id : 0, name : 1, city : 0, country : 0, quantity : 1 } }
] )shellKombineeri mitu etappi agregatsiooniga MongoDB-s
MongoDB agregatsioon võimaldab teil rakendada ka mitut järjestikust etappi. Need käivitatakse üksteise järel ja lõpuks saadakse väljund, mis võtab arvesse kõik soovitud parameetrid. Näiteks, kui soovite kuvada ainult Šoti klientide nimesid ja oste kahanevas järjekorras, võite kasutada eespool kirjeldatud etappe järgmiselt:
db.customers.aggregate ( [
{ $match : { "country" : "Scotland" } }
{ $project : { _id : 0, name : 1, city : 0, country : 0, quantity : 1 } }
{ $sort : { "quantity" : -1 } }
] )shell60d998b3c0b60c9c3df84ab9635a326f
5ea2c6aa6c01a3ab74e73bb4a8493f37