Како пребројати документе помоћу МонгоДБ агрегатног броја

Kako Prebrojati Dokumente Pomocu Mongodb Agregatnog Broja



Као што име сугерише, $цоунт агрегација у МонгоДБ-у мора да се користи за бројање записа поља. Један од популарних начина за бројање записа је коришћење методе цоунт(). Поред тога, одређени оператори агрегације вам омогућавају да пребројите записе донете из претходне фазе агрегатног цевовода. У оквиру овог водича данас ћемо разговарати о агрегацији бројања МонгоДБ-а користећи примере кода.

Пример 01

Да бисмо извршили операцију $цоунт на пољима колекције базе података у МонгоДБ-у, потребно је да имамо бројне записе. Стога смо креирали колекцију под називом „Тест“ и убацили 12 записа у њу истовремено користећи функцију инсертМани(). Сада су записи ове колекције „Тест“ приказани на љусци МонгоДБ преко упита функције финд(). Можете видети да има укупно три поља:_ид, име и резултат.

тест> дб.Тест.финд({})







Сада, да бисмо применили фазу $цоунт на било које поље, морамо користити МонгоДБ-ову агрегатну функцију унутар „дб“ инструкције. Агрегатна функција се састоји од наредбе услова, која често користи оператор $матцх на одређеном пољу, након чега следи ново поље које приказује укупан број добијен из наведеног поља услова помоћу оператора $цоунт.



У нашем случају, користили смо оператор $матцх за тражење одговарајућих записа за вредност „60“ у пољу резултата, док је оператор $цоунт коришћен за пребројавање укупног броја преузетих записа и њихово приказивање под ново поље под називом „СамеСцоре“. Излаз за овај упит је приказивао поље „СамеСцоре“ са вредношћу „2“ што указује да постоје два записа са вредношћу „резултата“ „60“ је 2 у колекцији „Тест“.



дб.Тест.аггрегате([ { $матцх: { 'резултат' : 60 } }, { $цоунт: 'СамеСцоре' } ])

Такође можете да користите агрегацију $цоунт да бисте пребројали поља која нису бројеви, као што је поље „наме“ у колекцији тестова. Користили смо агрегацију подударања да бисмо тражили запис у колекцији где поље имена има вредност „Јохн“. Агрегација бројања је успешно пребројала укупан број подударних записа који је 2.





дб.Тест.аггрегате([ { $матцх: { 'име' : 'Јован' } }, { $цоунт: 'Исто име' } ])

Пример 02

Хајде да ажурирамо горњи упит и применимо други услов да добијемо различите записе. Овај пут ћемо применити агрегацију $матцх поља резултата да бисмо добили укупан број записа где поље резултата има вредност мању од 30. Обједињавање броја ће бројати укупан број записа и додавати новом колона „Оцена Д“. Излаз приказује резултат „2“ као број за одговарајућу вредност.

дб.Тест.аггрегате( [ { $матцх: { сцоре: { $лт: 30 } } }, { $цоунт: 'ГрадеД' } ])

Такође можете да користите агрегацију $цоунт док примењујете логичке операторе да извршите више од 1 услова на записима поља. Стога су на поље „Сцоре“ примењена укупно два услова помоћу оператора $анд: гте (веће или једнако) и лте (мање од и једнако). Оба услова морају бити тачна да бисте добили резултат и пребројали његове записе. Укупан број показује да постоји пет записа са одговарајућим критеријумима.



дб.Тест.аггрегате( [ { $матцх: { '$ и' : [ { 'резултат' : {$гте: 60 }}, { 'резултат' : {$лте: 80 }} ] }},

{ $цоунт: 'Разред Б' } ])

Пример 03

У горњим илустрацијама, користили смо агрегацију бројања само да бисмо добили број подударних записа за одређене вредности поља, као што су одређени резултат или име. Метода агрегације МонгоДБ-а вам омогућава да добијете број свих записа који садрже дупле вредности у колекцији.

За ово морате да користите агрегацију $гроуп у оквиру команде функције агрегата, као у наставку. Поље _ид је коришћено да наведе поље „наме“ на којем ће радити агрегација бројања. Поред тога, кориснички дефинисано поље НамеЦоунт ће користити агрегацију $цоунт за бројање неколико дупликата у пољу „наме“.

Излаз за овај упит је приказан испод. Садржи вредности из поља „име“ и њихов број у оквиру поља НамеЦоунт у складу са дупликацијама вредности, као што је Циллиан са 4 дупликата и тако даље.

дб.Тест.аггрегате([ { $гроуп: { _ид: '$наме' , НамеЦоунт: { $цоунт: {} }, }, }, ])

Пример 04

Такође можемо да користимо агрегацију бројања на угнежђеним записима поља да пребројимо одређене вредности поља. Да бисмо ово елаборирали, направили смо колекцију под називом „Наставник“ и додали угнежђено поље „суб“ и поље типа низа „схифт“ унутар ње заједно са другим пољима: име и плаћа. Функција финд() је приказивала свих пет записа ове колекције.

тест> дб.Теацхер.финд({})

Сада смо применили агрегатну функцију која садржи оператор подударања. Такође, оператор $анд је примењен на потпоље „математика“ поља „суб“, које садржи два различита услова. Број је тада израчунат. Излаз показује да постоје два записа у којима математичко потпоље има веће од 10 и мање од 20 вредности.

дб.Теацхер.аггрегате( [ { $матцх: { '$ и' : [ { 'под.математика' : {$гте: 10 }}, { 'под.математика' : {$лте: двадесет }} ] }}, { $цоунт: 'Разред А' } ])

Пример 05

Погледајмо последњи пример да бисмо илустровали коришћење функције цоунт() овог пута уместо агрегације бројача. Дакле, функција цоунт() је примењена на поље типа низа колекције „Наставник“, тј. „схифт“. Користећи индексе за поље низа користећи индекс 2, одредили смо критеријуме подударања као „ноћ“. Он даје „2“ као укупан број бројања за унос „ноћ“.

дб.Теацхер.цоунт({ 'схифт.2' : 'ноћ' })

На веома сличан начин, функција цоунт() се такође може применити на угнежђена поља, као што је потпоље „пхи“ поља „суб“ из колекције „Наставник“. Навели смо критеријуме подударања користећи „лте“ оператор који указује на вредности мање од 14 у потпољу „пхи“. Излаз ове инструкције је приказивао „2“, тј. 4 записа са вредношћу мањом од 14.

дб.Теацхер.цоунт( { 'под.фија' : { $лте: 14 } })

Закључак

Овај водич демонстрира и елаборира коришћење $цоунт агрегације МонгоДБ-а са неколико примера кода. Примери укључују импликацију агрегације бројача за преузимање броја броја за специфичне записе вредности и све записе поља кроз колекције. Такође, укључује употребу агрегације бројања на пољима низа и уграђеним (угнежђеним) пољима. На крају, пример функције цоунт() је укључен како би се направила разлика између употребе агрегације бројања и функције цоунт.