Paano Magbilang ng Mga Dokumento gamit ang MongoDB Aggregate Count

Paano Magbilang Ng Mga Dokumento Gamit Ang Mongodb Aggregate Count



Tulad ng iminumungkahi ng pangalan, ang $count aggregation sa MongoDB ay dapat gamitin para sa pagbibilang ng mga talaan ng field. Ang isa sa mga tanyag na paraan upang mabilang ang mga tala ay ang paggamit ng count() na paraan. Bukod pa rito, hinahayaan ka ng ilang partikular na operator ng aggregation na bilangin ang mga record na dinala mula sa isang naunang yugto ng pinagsama-samang pipeline. Sa loob ng gabay na ito ngayon, tatalakayin natin ang count aggregation ng MongoDB gamit ang mga halimbawa ng code.

Halimbawa 01

Upang maisagawa ang $count operation sa mga field ng isang database collection sa MongoDB, kailangan nating magkaroon ng maraming record. Samakatuwid, lumikha kami ng isang koleksyon na pinangalanang 'Test' at nagpasok ng 12 na tala dito nang sabay-sabay gamit ang insertMany() function. Ngayon, ang mga talaan ng koleksyong 'Pagsubok' na ito ay ipinakita sa shell ng MongoDB sa pamamagitan ng find() function query. Makikita mo na mayroon itong kabuuang tatlong field:_id, pangalan, at marka.

pagsubok> db.Test.find({})







Ngayon, upang mailapat ang yugto ng $count sa anumang field, dapat nating gamitin ang pinagsama-samang function ng MongoDB sa loob ng pagtuturo ng 'db'. Ang pinagsama-samang function ay binubuo ng condition statement, kadalasang gumagamit ng $match operator sa isang partikular na field, na sinusundan ng bagong field na nagpapakita ng kabuuang bilang na nakuha mula sa tinukoy na condition field gamit ang $count operator.



Sa aming kaso, ginagamit namin ang operator ng $match upang maghanap para sa mga katugmang talaan para sa halagang '60' sa field ng puntos, habang ang operator ng $count ay ginamit upang bilangin ang kabuuang bilang ng mga record na nakuha at ipakita ang mga ito sa ilalim ng bagong field na pinangalanang 'SameScore'. Ang output para sa query na ito ay nagpapakita ng field na 'SameScore' na may value na '2' na nagsasaad na mayroong dalawang record na may value na 'score' na '60' ay 2 sa koleksyon na 'Test'.



db.Test.aggregate([ { $match: { 'iskor' : 60 } }, { $count: 'SameScore' } ])

Maaari mo ring gamitin ang $count aggregation upang mabilang ang mga field maliban sa mga numero, gaya ng field na 'pangalan' ng koleksyon ng Pagsubok. Gumagamit kami ng pagsasama-sama ng tugma upang hanapin ang tala sa koleksyon kung saan ang field ng pangalan ay may value na 'John.' Matagumpay na nabilang ng count aggregation ang kabuuang bilang ng mga record na tumugma na 2.





db.Test.aggregate([ { $match: { 'pangalan' : 'John' } }, { $count: 'SameName' } ])

Halimbawa 02

I-update natin ang query sa itaas at maglapat ng isa pang kundisyon upang makakuha ng iba't ibang mga tala. Sa pagkakataong ito, ilalapat namin ang $match aggregation ng field ng score para makuha ang kabuuang bilang ng mga record kung saan ang field ng score ay may halaga na mas mababa sa 30. Ang count aggregation ay magbibilang ng kabuuang bilang ng mga record at magdaragdag sa isang bagong column “GradeD.” Ipinapakita ng output ang resultang '2' bilang bilang ng bilang para sa katugmang halaga.

db.Test.aggregate( [ { $match: { score: { $lt: 30 } } }, { $count: 'GradeD' } ])

Maaari mo ring gamitin ang $count aggregation habang inilalapat ang mga lohikal na operator upang magsagawa ng higit sa 1 kundisyon sa mga talaan ng field. Samakatuwid, isang kabuuang dalawang kundisyon ang inilapat sa field na 'Score' gamit ang $and operator: gte (mas malaki kaysa o katumbas ng) at lte (mas mababa sa at katumbas ng). Ang parehong kundisyon ay dapat na totoo upang makuha ang resulta at mabilang ang mga tala nito. Ang kabuuang bilang ay nagpapakita na mayroong limang talaan na may katumbas na pamantayan.



db.Test.aggregate( [ { $match: { '$at' : [ { 'iskor' : {$gte: 60 }}, { 'iskor' : {$lte: 80 }} ] }},

{ $count: 'Grade B' } ])

Halimbawa 03

Sa mga paglalarawan sa itaas, ginamit namin ang pagsasama-sama ng bilang upang makuha lamang ang bilang ng mga naitugmang tala para sa partikular na mga halaga ng field, tulad ng isang tinukoy na marka o pangalan. Ang paraan ng pagsasama-sama ng MongoDB ay nagbibigay-daan sa iyo upang makuha ang bilang ng bilang ng lahat ng mga talaan na naglalaman ng mga duplicate na halaga sa koleksyon.

Para dito, kailangan mong gamitin ang $group aggregation sa loob ng aggregate function command, tulad ng nasa ibaba. Ang field na _id ay ginamit upang tukuyin ang field na 'pangalan' kung saan gagana ang pagsasama-sama ng bilang. Kasabay nito, gagamitin ng field na tinukoy ng gumagamit ng NameCount ang $count aggregation para magbilang ng ilang duplicate sa field na 'pangalan'.

Ang output para sa query na ito ay ipinakita sa ibaba. Naglalaman ito ng mga halaga mula sa field na 'pangalan' at ang bilang ng mga ito sa loob ng field ng NameCount ayon sa mga duplikasyon ng mga halaga, tulad ng pagkakaroon ng Cillian ng 4 na duplicate, at iba pa.

db.Test.aggregate([ { $group: { _id: '$pangalan' , NameCount: { $count: {} }, }, }, ])

Halimbawa 04

Magagamit din namin ang count aggregation sa mga nested field record para mabilang ang mga partikular na value ng field. Upang ipaliwanag ito, gumawa kami ng isang koleksyon na pinangalanang 'Guro' at nagdagdag ng nested field na 'sub' at array-type na field na 'shift' sa loob nito kasama ng iba pang mga field: pangalan at bayad. Ang function na find() ay nagpapakita ng lahat ng limang talaan ng koleksyong ito.

pagsubok> db.Teacher.find({})

Ngayon, nailapat na namin ang pinagsama-samang function na naglalaman ng operator ng tugma. Gayundin, ang $and operator ay nailapat sa sub-field na 'math' ng 'sub' na field, na naglalaman ng dalawang magkaibang kundisyon. Ang bilang ay pagkatapos ay nakalkula. Ipinapakita ng output na mayroong dalawang talaan kung saan ang subfield math ay may higit sa 10 at mas mababa sa 20 na mga halaga.

db.Teacher.aggregate( [ { $match: { '$at' : [ { 'sub.math' : {$gte: 10 }}, { 'sub.math' : {$lte: dalawampu }} ] }}, { $count: 'Grade A' } ])

Halimbawa 05

Tingnan natin ang huling halimbawa upang ilarawan ang paggamit ng count() function sa oras na ito sa halip na gamitin ang count aggregation. Kaya, ang count() function ay nailapat sa array-type na field ng koleksyong 'Guro' ibig sabihin, 'shift'. Gamit ang mga index para sa array field gamit ang index 2, tinukoy namin ang pagtutugma ng pamantayan bilang 'gabi'. Naglalabas ito ng '2' bilang kabuuang bilang ng mga bilang para sa entry na 'gabi'.

db.Teacher.count({ 'shift.2' : 'gabi' })

Sa katulad na paraan, ang count() function ay maaari ding ilapat sa mga nested field, tulad ng subfield na 'phy' ng 'sub' na field mula sa koleksyon na 'Teacher'. Tinukoy namin ang pagtutugmang pamantayan gamit ang operator na 'lte' na nagsasaad ng mga halagang mas mababa sa 14 sa subfield ng 'phy'. Ang output ng pagtuturo na ito ay nagpapakita ng '2' i.e. 4 na talaan na may halagang mas mababa sa 14.

db.Teacher.count( { 'sub.phy' : { $lte: 14 } })

Konklusyon

Ang gabay na ito ay nagpapakita at nag-elaborate sa paggamit ng $count aggregation ng MongoDB na may ilang mga halimbawa ng code. Kasama sa mga halimbawa ang implikasyon ng pagsasama-sama ng bilang upang kunin ang bilang ng bilang para sa mga partikular na talaan ng halaga at lahat ng talaan ng field sa pamamagitan ng mga koleksyon. Gayundin, kabilang dito ang paggamit ng pagsasama-sama ng bilang sa mga field ng array at mga naka-embed (nested) na field. Sa huli, isinama ang halimbawa ng function na count() upang makagawa ng pagkakaiba sa pagitan ng paggamit ng count aggregation at ng count function.