Jak liczyć dokumenty za pomocą MongoDB Aggregate Count

Jak Liczyc Dokumenty Za Pomoca Mongodb Aggregate Count



Jak sama nazwa wskazuje, do zliczania rekordów pól należy używać agregacji $count w MongoDB. Jednym z popularnych sposobów liczenia rekordów jest użycie metody count(). Ponadto niektórzy operatorzy agregacji umożliwiają zliczanie rekordów wprowadzonych z poprzedniego etapu potoku agregacji. W dzisiejszym przewodniku omówimy agregację liczników MongoDB na przykładach kodu.

Przykład 01

Aby wykonać operację $count na polach kolekcji bazy danych w MongoDB, musimy mieć wiele rekordów. Dlatego stworzyliśmy kolekcję o nazwie „Test” i wstawiliśmy do niej 12 rekordów jednocześnie za pomocą funkcji InsertMany(). Teraz rekordy tej kolekcji „Test” zostały wyświetlone w powłoce MongoDB za pomocą zapytania funkcji find(). Możesz zobaczyć, że ma w sumie trzy pola: _id, nazwę i wynik.

test> db.Test.find({})







Teraz, aby zastosować etap $count w dowolnym polu, musimy użyć funkcji agregującej MongoDB w instrukcji „db”. Funkcja agregująca składa się z instrukcji warunku, często używającej operatora $match w określonym polu, po której następuje nowe pole, które wyświetla całkowitą liczbę uzyskaną z określonego pola warunku za pomocą operatora $count.



W naszym przypadku użyliśmy operatora $match do wyszukiwania pasujących rekordów dla wartości „60” w polu score, natomiast operatora $count użyliśmy do zliczenia całkowitej liczby pobranych rekordów i wyświetlenia ich pod polem nowe pole o nazwie „SameScore”. Dane wyjściowe tego zapytania wyświetlają pole „SameScore” o wartości „2”, co wskazuje, że w kolekcji „Test” znajdują się dwa rekordy z wartością „score” „60” wynoszącą 2.



db.Test.aggregate([ { $dopasowanie: { 'wynik' : 60 } }, {$liczba: „Ten sam wynik” } ])

Agregacji $count można także używać do zliczania pól innych niż liczby, np. pola „nazwa” kolekcji Test. Używaliśmy agregacji dopasowań do wyszukiwania rekordu w kolekcji, w którym pole nazwy ma wartość „John”. Agregacja liczników pomyślnie policzyła całkowitą liczbę dopasowanych rekordów, która wynosi 2.





db.Test.aggregate([ { $dopasowanie: { 'nazwa' : 'Jan' } }, {$liczba: 'Takie samo imię' } ])

Przykład 02

Zaktualizujmy powyższe zapytanie i zastosujmy inny warunek, aby uzyskać inne rekordy. Tym razem zastosujemy agregację $match pola wyniku, aby uzyskać całkowitą liczbę rekordów, w których pole wyniku ma wartość mniejszą niż 30. Agregacja zliczeń będzie polegać na zliczeniu całkowitej liczby rekordów i dodaniu do nowego kolumna „GradeD”. Dane wyjściowe pokazują wynik „2” jako liczbę zliczeń dla dopasowanej wartości.

db.Test.aggregate( [ { $dopasowanie: { wynik: { $lt: 30 } } }, { $liczba: „Klasa D” } ] )

Agregacji $count można także użyć podczas stosowania operatorów logicznych w celu wykonania więcej niż 1 warunku w rekordach pól. Dlatego też do pola „Wynik” zastosowano łącznie dwa warunki za pomocą operatora $and: gte (większy lub równy) i lte (mniejszy i równy). Aby uzyskać wynik i policzyć jego rekordy, oba warunki muszą być spełnione. Całkowita liczba pokazuje, że istnieje pięć rekordów spełniających kryteria dopasowania.



db.Test.aggregate( [ { $dopasowanie: { „$i” : [ { 'wynik' : {$gte: 60 }}, { 'wynik' : {$ inny: 80 }} ] }},

{$liczba: „Klasa B” } ] )

Przykład 03

Na powyższych ilustracjach użyliśmy agregacji liczników, aby uzyskać tylko liczbę pasujących rekordów dla określonych wartości pól, takich jak określony wynik lub nazwa. Metoda agregacji MongoDB pozwala uzyskać liczbę wszystkich rekordów zawierających zduplikowane wartości w kolekcji.

W tym celu należy użyć agregacji $group w poleceniu funkcji agregującej, jak poniżej. Pole _id zostało użyte do określenia pola „nazwa”, na którym będzie działać agregacja liczników. Oprócz tego pole zdefiniowane przez użytkownika NameCount będzie wykorzystywać agregację $count do zliczania kilku duplikatów w polu „nazwa”.

Wynik tego zapytania został wyświetlony poniżej. Zawiera wartości z pola „nazwa” i ich liczbę w polu NameCount zgodnie z duplikacjami wartości, np. Cillian ma 4 duplikaty i tak dalej.

db.Test.aggregate([ { $grupa: { _id: „$nazwa” , NameCount: { $count: {} }, }, }, ])

Przykład 04

Możemy również użyć agregacji zliczeń w rekordach pól zagnieżdżonych, aby zliczyć określone wartości pól. Aby to rozwinąć, stworzyliśmy kolekcję o nazwie „Nauczyciel” i dodaliśmy w niej zagnieżdżone pole „sub” i pole typu tablicowego „shift” wraz z innymi polami: imię i nazwisko oraz wynagrodzenie. Funkcja find() wyświetla wszystkie pięć rekordów tej kolekcji.

test> db.Teacher.find({})

Teraz zastosowaliśmy funkcję agregującą zawierającą operator dopasowania. Ponadto operator $and został zastosowany do podpola „math” pola „sub”, które zawiera dwa różne warunki. Następnie obliczono liczbę. Dane wyjściowe pokazują, że istnieją dwa rekordy, w których matematyka podpola ma wartości większe niż 10 i mniejsze niż 20.

db.Teacher.aggregate( [ { $dopasowanie: { „$i” : [ { „sub.matematyka” : {$gte: 10 }}, { „sub.matematyka” : {$ inny: 20 }} ] }}, {$liczba: „Klasa A” } ] )

Przykład 05

Spójrzmy na ostatni przykład, aby zilustrować użycie funkcji count() tym razem zamiast agregacji count. Zatem funkcja count() została zastosowana do pola typu tablicowego kolekcji „Teacher”, czyli „shift”. Korzystając z indeksów pola tablicowego przy użyciu indeksu 2, określiliśmy kryteria dopasowania jako „noc”. Wyświetla „2” jako całkowitą liczbę zliczeń dla wpisu „noc”.

db.Teacher.count({ „przesunięcie.2” : 'noc' })

W bardzo podobny sposób funkcję count() można zastosować także do pól zagnieżdżonych, takich jak podpole „phy” pola „sub” z kolekcji „Teacher”. Kryteria dopasowania określiliśmy za pomocą operatora „lte”, wskazując wartości mniejsze niż 14 w podpolu „phy”. Dane wyjściowe tej instrukcji wyświetlają „2”, tj. 4 rekordy o wartości mniejszej niż 14.

db.Teacher.count( { „sub.phy” : {$złoty: 14 } })

Wniosek

W tym przewodniku zademonstrowano i omówiono użycie agregacji $count MongoDB z kilkoma przykładami kodu. Przykłady obejmują konsekwencje agregacji zliczeń w celu pobrania liczby zliczeń dla określonych rekordów wartości i wszystkich rekordów pól w kolekcjach. Obejmuje także użycie agregacji liczników w polach tablicowych i polach osadzonych (zagnieżdżonych). Na koniec dołączono przykład funkcji count(), aby odróżnić użycie agregacji zliczeń od funkcji zliczania.