Jak počítat dokumenty s MongoDB Aggregate Count

Jak Pocitat Dokumenty S Mongodb Aggregate Count



Jak název napovídá, agregace $count v MongoDB musí být použita pro počítání záznamů pole. Jedním z oblíbených způsobů počítání záznamů je použití metody count(). Některé operátory agregace vám navíc umožňují počítat záznamy přenesené z předchozí fáze agregačního kanálu. V této příručce dnes budeme diskutovat o agregaci počtu MongoDB pomocí příkladů kódu.

Příklad 01

K provedení operace $count na polích kolekce databáze v MongoDB potřebujeme mít mnoho záznamů. Vytvořili jsme proto kolekci s názvem „Test“ a vložili do ní 12 záznamů současně pomocí funkce insertMany(). Nyní byly záznamy této kolekce „Test“ zobrazeny v prostředí MongoDB pomocí dotazu funkce find(). Můžete vidět, že má celkem tři pole: _id, name a score.

test> db.Test.find({})







Nyní, abychom mohli použít fázi $count na libovolné pole, musíme použít agregační funkci MongoDB v rámci instrukce „db“. Agregační funkce se skládá z příkazu podmínky, který často používá operátor $match na konkrétním poli, následovaný novým polem, které zobrazuje celkový počet získaný ze zadaného pole podmínky pomocí operátoru $count.



V našem případě jsme použili operátor $match k vyhledání odpovídajících záznamů pro hodnotu „60“ v poli skóre, zatímco operátor $count byl použit k počítání celkového počtu načtených záznamů a jejich zobrazení pod nové pole s názvem „SameScore“. Výstupem tohoto dotazu bylo zobrazení pole ‚SameScore‘ s hodnotou ‚2‘ indikující, že existují dva záznamy s hodnotou ‚skóre‘, ‚60‘ je 2 v kolekci ‚Test‘.



db.Test.aggregate([ { $match: { 'skóre' : 60 } }, { $počet: 'Stejné skóre' } ])

Agregaci $count můžete také použít k počítání jiných polí než čísel, jako je například pole „name“ kolekce Test. K vyhledávání záznamu v kolekci, kde pole názvu má hodnotu „John“, používáme agregaci shody. Agregace počtu úspěšně spočítala celkový počet shodných záznamů, což jsou 2.





db.Test.aggregate([ { $match: { 'název' : 'John' } }, { $počet: 'Stejné jméno' } ])

Příklad 02

Pojďme aktualizovat výše uvedený dotaz a použít jinou podmínku, abychom získali jiné záznamy. Tentokrát použijeme agregaci $match pole skóre, abychom získali celkový počet záznamů, kde má pole skóre hodnotu menší než 30. Agregace počtu bude počítat celkový počet záznamů a přidat k novému sloupec „Hodnocení“. Výstup zobrazuje výsledek „2“ jako počet odpovídajících hodnot.

db.Test.aggregate( [ { $match: { skóre: { $lt: 30 } } }, { $počet: 'známkovaný' }])

Můžete také použít agregaci $count při použití logických operátorů k provedení více než 1 podmínky v záznamech pole. Proto byly na pole „Skóre“ pomocí operátoru $and aplikovány celkem dvě podmínky: gte (větší než nebo rovno) a lte (menší než a rovno). Aby bylo možné získat výsledek a počítat jeho záznamy, musí být splněny obě podmínky. Celkový počet ukazuje, že existuje pět záznamů s odpovídajícími kritérii.



db.Test.aggregate( [ { $match: { '$and' : [ { 'skóre' : {$gte: 60 }}, { 'skóre' : {$lte: 80 }} ] }},

{ $count: 'Stupeň B' }])

Příklad 03

Ve výše uvedených ilustracích jsme použili agregaci počtu, abychom získali pouze počet odpovídajících záznamů pro konkrétní hodnoty pole, jako je zadané skóre nebo název. Metoda agregace MongoDB vám umožňuje získat počet všech záznamů obsahujících duplicitní hodnoty v kolekci.

K tomu musíte použít agregaci $group v rámci příkazu agregační funkce, jak je uvedeno níže. Pole _id bylo použito k zadání pole „name“, na kterém by agregace počtu fungovala. Spolu s tím bude uživatelsky definované pole NameCount využívat agregaci $count k počítání několika duplikátů v poli „name“.

Výstup pro tento dotaz byl zobrazen níže. Obsahuje hodnoty z pole „name“ a jejich počet v poli NameCount podle duplikací hodnot, např. Cillian má 4 duplikáty a tak dále.

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

Příklad 04

Můžeme také použít agregaci počtu na vnořených záznamech polí k počítání hodnot jednotlivých polí. Abychom to propracovali, vytvořili jsme kolekci s názvem „Učitel“ a přidali do ní vnořené pole „sub“ a pole typu pole „shift“ spolu s dalšími poli: jméno a platba. Funkce find() zobrazuje všech pět záznamů této kolekce.

test> db.Teacher.find({})

Nyní jsme použili agregační funkci obsahující operátor shody. Operátor $and byl také použit na podpole „math“ pole „sub“, které obsahuje dvě různé podmínky. Poté byl počet vypočten. Výstup ukazuje, že existují dva záznamy, kde má podpole matematika větší než 10 a méně než 20 hodnot.

db.Teacher.aggregate( [ { $match: { '$and' : [ { 'sub.math' : {$gte: 10 }}, { 'sub.math' : {$lte: dvacet }} ] }}, { $count: 'Známka A' }])

Příklad 05

Podívejme se na poslední příklad pro ilustraci použití funkce count() tentokrát namísto použití agregace počtu. Takže funkce count() byla aplikována na pole typu pole kolekce „Teacher“, tj. „shift“. Pomocí indexů pro pole pole s indexem 2 jsme specifikovali kritéria shody jako „noc“. Vypíše „2“ jako celkový počet impulzů pro záznam „noc“.

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

Velmi podobným způsobem lze funkci count() použít také na vnořená pole, jako je podpole „phy“ pole „sub“ z kolekce „Teacher“. Kritéria shody jsme specifikovali pomocí operátoru „lte“, který v podpoli „phy“ uvádí hodnoty menší než 14. Výstup této instrukce zobrazuje „2“, tj. 4 záznamy s hodnotou menší než 14.

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

Závěr

Tato příručka demonstruje a rozvádí použití $count agregace MongoDB s několika příklady kódu. Příklady zahrnují implikaci agregace počtu pro načtení čísla počtu pro záznamy konkrétní hodnoty a všechny záznamy pole prostřednictvím kolekcí. Zahrnuje také použití agregace počtu na polích pole a vložených (vnořených) polích. Nakonec byl zahrnut příklad funkce count(), aby se odlišilo použití agregace počtu a funkce count.