MongoDB-ryhmän yhdistäminen

Mongodb Ryhman Yhdistaminen



Aggregointi on menetelmä tietojen poimimiseksi MongoDB-kokoelmasta. Se käsittelee lukuisia asiakirjoja ja tarjoaa arvioituja tuloksia. MongoDB:n aggregaatiossa on useita operaattoreita ja menetelmiä, jotka suorittavat erilaisia ​​tehtäviä. Näistä operaattoreista $group-operaattori ryhmittelee asiakirjat jokaiselle yksilölliselle ryhmittelylle ja järjestää ne määritellyn lausekkeen mukaan. Ryhmäoperaattori on merkittävä MongoDB:ssä, koska se mahdollistaa monenlaisia ​​tietojen käsittelyä. Alla on MongoDB-esimerkin $group-aggregointi eri akkujen kanssa.

Kuinka ryhmien yhdistäminen toimii MongoDB:ssä?

$group-operaattoria tulisi käyttää syöteasiakirjojen ryhmittelyyn määritetyn _id-lausekkeen mukaan. Sen pitäisi sitten palauttaa yksi asiakirja, jossa on kunkin erillisen ryhmän kokonaisarvot. Toteutuksen aloittamiseksi olemme luoneet 'Kirjat' -kokoelman MongoDB:hen. Kirjat-kokoelman luomisen jälkeen olemme lisänneet eri kenttiin liittyvät asiakirjat. Asiakirjat lisätään kokoelmaan insertMany()-menetelmällä, kuten alla on esitetty suoritettava kysely.

>db.Books.insertMany([

{
_id:1,
otsikko: 'Anna Karenina',
hinta: 290,
vuosi: 1879,
order_status: 'varastossa',
kirjoittaja: {
'nimi': 'Leo Tolstoi'
}
},
{
_id:2,
otsikko: 'To Kill a Mockingbird',
hinta: 500,
vuosi: 1960,
order_status: 'out-of-stock',
kirjoittaja: {
'nimi': 'Harper Lee'
}
},
{
_id:3,
otsikko: 'Näkymätön mies',
hinta: 312
vuosi: 1953,
order_status: 'varastossa',
kirjoittaja: {
'nimi':'Ralph Ellison'
}
},
{
_id:4,
otsikko: 'Rakas',
hinta: 370,
vuosi: 1873,
order_status: 'out_of_stock',
kirjoittaja: {
'nimi': 'Toni Morrison'
}
},
{
_id:5,
otsikko: 'Asiat hajoavat',
hinta: 200,
vuosi: 1958,
order_status: 'varastossa',
kirjoittaja: {
'nimi':'Chinua Achebe'
}
},
{
_id:6,
otsikko: 'The Color Purple',
hinta: 510,
vuosi: 1982,
order_status: 'out-of-stock',
kirjoittaja: {
'nimi': 'Alice Walker'
}
}
])

Asiakirjat tallennetaan onnistuneesti 'Kirjat'-kokoelmaan ilman virheitä, koska tulos kuitataan 'tosi'. Nyt aiomme käyttää näitä 'Kirjat' -kokoelman asiakirjoja '$group' -aggregoinnin suorittamiseen.









Esimerkki # 1: $group Aggregationin käyttö



$group aggregaation yksinkertainen käyttö on esitetty tässä. Aggregaattikysely syöttää ensin '$group'-operaattorin ja sitten '$group'-operaattori ottaa lausekkeet ryhmiteltyjen asiakirjojen luomiseksi.





>db.Books.aggregate([

{ $ryhmä:{ _id:'$author.name'} }

])

$group-operaattorin yllä oleva kysely on määritetty '_id'-kentällä kaikkien syöttöasiakirjojen kokonaisarvojen laskemiseksi. Sitten '_id'-kenttään osoitetaan '$author.name', joka muodostaa eri ryhmän '_id'-kenttään. Tiedoston $author.name erilliset arvot palautetaan, koska emme laske kertynyttä arvoa. $group aggregate -kyselyn suorituksella on seuraava tulos. _id-kentässä on tekijän.nimet arvot.



Esimerkki # 2: $group Aggregationin käyttö $push Accumulatorin kanssa

Esimerkki $group aggregaatiosta käyttää mitä tahansa akkua, joka on jo mainittu yllä. Mutta voimme käyttää akkuja $group aggregaatiossa. Akkuoperaattorit ovat niitä, joita käytetään muissa syöttöasiakirjan kentissä kuin niissä, jotka on 'ryhmitelty' kohtaan '_id'. Oletetaan, että haluamme työntää lausekkeen kentät taulukkoon, jolloin '$push'-akku kutsutaan '$group'-operaattorissa. Esimerkki auttaa sinua ymmärtämään selkeämmin ryhmän '$push' akun.

>db.Books.aggregate(

[

{ $ryhmä : { _id : '$_id', vuosi: { $push: '$year' } } }

]

).nätti();

Tässä haluamme ryhmitellä taulukossa olevien kirjojen julkaisuvuoden. Yllä olevaa kyselyä tulisi käyttää tämän saavuttamiseksi. Aggregointikyselyssä on lauseke, jossa '$group'-operaattori ottaa kenttälausekkeen '_id' ja 'year'-kentän lausekkeen saadakseen ryhmän vuoden käyttämällä $push-akkua. Tästä tietystä kyselystä haettu tulos luo vuosikenttien joukon ja tallentaa palautetun ryhmitellyn asiakirjan sen sisään.

Esimerkki # 3: $group Aggregationin käyttö $min-akun kanssa

Seuraavaksi meillä on '$min' -akku, jota käytetään $group-aggregaatiossa saadakseen vähimmäisvastaava arvo jokaisesta kokoelman dokumentista. $min-akun kyselylauseke on annettu alla.

>db.Books.aggregate([

{
$ryhmä:{
_id:{
otsikko: '$title',
order_status: '$order_status'
},
minPrice:{$min: '$price'}
}
}
])

Kyselyssä on '$group' -koostelauseke, johon olemme ryhmittäneet asiakirjan 'title'- ja 'order_status'-kentille. Sitten toimitimme $min-akun, joka ryhmitteli asiakirjat saamalla vähimmäishinta-arvot ryhmittämättömistä kentistä. Kun suoritamme tämän alla olevan $min akkukyselyn, se palauttaa ryhmitellyt asiakirjat otsikon ja tilauksen_tilan mukaan järjestyksessä. Vähimmäishinta näkyy ensimmäisenä ja asiakirjan korkein hinta viimeisenä.

Esimerkki # 4: Käytä $group Aggregaatiota $sum Accumulatorin kanssa

Jotta saadaan kaikkien numeeristen kenttien summa käyttämällä $group-operaattoria, käytetään $sum akkutoimintoa. Tämä akku ottaa huomioon kokoelmien ei-numeeriset arvot. Lisäksi käytämme tässä $match-aggregaatiota $group-koosteen kanssa. $match-kooste hyväksyy asiakirjassa annetut kyselyehdot ja välittää vastaavan dokumentin $group-koosteen, joka palauttaa sitten kunkin ryhmän asiakirjan summan. $summa-akkua varten kysely esitetään alla.

>db.Books.aggregate([

{ $match:{ order_status:'In-Stock'}},

{ $ryhmä:{ _id:'$author.name', totalBooks: { $sum:1 } }

}])

Yllä oleva koontikysely alkaa $match-operaattorilla, joka vastaa kaikkia 'order_status' -tilaa, jonka tila on 'In-Stock' ja joka välitetään $-ryhmään syötteenä. Sitten $group-operaattorilla on $sum akkulauseke, joka tulostaa kaikkien varastossa olevien kirjojen summan. Huomaa, että '$sum:1' lisää 1:n jokaiseen samaan ryhmään kuuluvaan asiakirjaan. Tässä tuloste näytti vain kaksi ryhmiteltyä asiakirjaa, joiden 'tilaustila' liittyy 'varastossa'.

Esimerkki # 5: Käytä $group Aggregaatiota $sort Aggregationin kanssa

$group-operaattoria käytetään tässä yhdessä '$sort'-operaattorin kanssa, jota käytetään ryhmiteltyjen asiakirjojen lajitteluun. Seuraavassa kyselyssä on kolme vaihetta lajittelutoimintoon. Ensimmäinen on $match-vaihe, sitten $ryhmävaihe ja viimeinen on $sort-vaihe, joka lajittelee ryhmitellyn asiakirjan.

>db.Books.aggregate([

{ $match:{ order_status:'out-of-stock'}},

{ $group:{ _id:{ authorName :'$author.name'}, totalBooks: { $sum:1} } },

{ $lajittelu:{ tekijännimi:1}}

])

Tästä olemme hakeneet vastaavan asiakirjan, jonka 'tilauksen_tila' on loppunut varastosta. Sitten vastaava asiakirja syötetään $group-vaiheeseen, joka ryhmitti asiakirjan kentillä 'authorName' ja 'totalBooks'. $group-lauseke liittyy $sum akkumulaattoriin loppuneiden kirjojen kokonaismäärään. Ryhmitetyt asiakirjat lajitellaan sitten $sort-lausekkeella nousevaan järjestykseen, koska '1' tarkoittaa tässä nousevaa järjestystä. Määritetyssä järjestyksessä lajiteltu ryhmätosite saadaan seuraavassa tulosteessa.

Esimerkki # 6: Käytä $group-aggregaatiota erilliselle arvolle

Kokoamismenettely myös ryhmittelee asiakirjat nimikkeittäin käyttämällä $group-operaattoria erillisten nimikearvojen poimimiseksi. Otetaan tämän lauseen kyselylauseke MongoDB:ssä.

>db.Books.aggregate( [ { $ryhmä : { _id : '$nimi' } } ] ).pretty();

Kokoonpanokyselyä sovelletaan Kirjat-kokoelmaan ryhmädokumentin erillisen arvon saamiseksi. $ryhmä tässä ottaa _id-lausekkeen, joka tulostaa erilliset arvot, koska olemme syöttäneet siihen 'title'-kentän. Ryhmädokumentin tulos saadaan suoritettaessa tämä kysely, jonka nimien ryhmä on _id-kentässä.

Johtopäätös

Oppaan tarkoituksena oli selvittää $group aggregation -operaattorin käsite asiakirjan ryhmittelyssä MongoDB-tietokannassa. MongoDB-aggregaattilähestymistapa parantaa ryhmittelyilmiöitä. $group-operaattorin syntaksirakenne on esitelty esimerkkiohjelmilla. $group-operaattoreiden perusesimerkin lisäksi olemme käyttäneet tätä operaattoria myös joidenkin akkujen, kuten $push, $min, $sum, ja operaattorien, kuten $match ja $sort, kanssa.