Agregacja grupy MongoDB

Agregacja grupy MongoDB
Agregacja to procedura wyodrębniania danych z kolekcji MongoDB. Przetwarza wiele dokumentów i zapewnia szacunkowe wyniki. Agregacja w MongoDB ma kilku operatorów i metod, które wykonują różne zadania. Wśród tych operatorów operator grupy $ grupuje dokumenty dla każdej unikalnej grupy i układa je zgodnie z wyrażeniem zdefiniowanym. Operator grupy jest znaczący w MongoDB, ponieważ ułatwia szeroki zakres manipulacji danych. Agregacja grupy $ w przykładzie MongoDB wraz z różnymi akumulatorami podano poniżej.

Jak działa agregacja grupy w MongoDB?

Operator grupy $ powinien być używany do grupowania dokumentów wejściowych zgodnie z określonym wyrażeniem _id. Powinien następnie zwrócić pojedynczy dokument z całkowitymi wartościami dla każdej osobnej grupy. Na początek wdrożeniu stworzyliśmy kolekcję „książek” w MongoDB. Po utworzeniu kolekcji „książek” wstawiliśmy dokumenty związane z różnymi dziedzinami. Dokumenty są wstawiane do kolekcji metodą InsertMany () jako wykonywane zapytanie, pokazano poniżej.

> db.Książki.wstrząs

_id: 1,
Tytuł: „Anna Karenina”,
Cena: 290,
Rok: 1879,
Order_status: „In-Stock”,
Autor:
„Nazwa”: „Leo Toolstoy”

,

_id: 2,
Tytuł: „Kill a Mockingbird”,
Cena: 500,
Rok: 1960,
Order_status: „poza magazynem”,
Autor:
„Nazwa”: „Harper Lee”

,

_id: 3,
Tytuł: „Niewidzialny człowiek”,
Cena: 312,
Rok: 1953,
Order_status: „In-Stock”,
Autor:
„Nazwa”: „Ralph Ellison”

,

_id: 4,
Tytuł: „Umiłowany”,
Cena: 370,
Rok: 1873,
Order_status: „Out_of_stock”,
Autor:
„Nazwa”: „Toni Morrison”

,

_id: 5,
Tytuł: „Rzeczy się rozpadają”,
Cena: 200,
Rok: 1958,
Order_status: „In-Stock”,
Autor:
„Nazwa”: „Chinua Achebe”

,

_id: 6,
Tytuł: „The Color Purple”,
Cena: 510,
Rok: 1982,
Order_status: „poza magazynem”,
Autor:
„Nazwa”: „Alice Walker”


])

Dokumenty są z powodzeniem przechowywane w kolekcji „książek” bez napotkania jakiegokolwiek błędu, ponieważ dane wyjściowe jest uznane za „prawdziwe”. Teraz użyjemy tych dokumentów kolekcji „książek” do wykonania agregacji „$ grupy”.

Przykład nr 1: Zastosowanie agregacji grupy $

Wykazano tutaj proste użycie agregacji grupy $. Zgadzane wprowadzanie zapytania Operator „$ Group” najpierw, a następnie operator „$ grupa” dalej przyjmuje wyrażenia w celu wygenerowania zgrupowanych dokumentów.

> db.Książki.agregat([
$ grupa: _id: '$ autor.nazwa'
])

Powyższe zapytanie operatora grupy $ jest określone w polu „_id” w celu obliczenia całkowitych wartości dla wszystkich dokumentów wejściowych. Następnie pole „_id” jest przydzielane do „$ autor.nazwa ”, która tworzy inną grupę w polu„ _id ”. Oddzielne wartości $ autora.Nazwa zostanie zwrócona, ponieważ nie obliczamy żadnych skumulowanych wartości. Wykonanie zapytania grupy $ Group ma następujące dane wyjściowe. Pole _id ma wartości autora.nazwy.

Przykład nr 2: Zastosowanie agregacji grupy $ z $ push akumulator

Przykład agregacji grupy $ wykorzystuje dowolny akumulator, który jest już wspomniany powyżej. Ale możemy użyć akumulatorów w agregacji grupy $. Operatorzy akumulatora to te, które są używane na polach dokumentów wejściowych innych niż te, które są „zgrupowane” w „_id”. Załóżmy, że chcemy wepchnąć pola wyrażenia do tablicy, a następnie akumulator „$ push” jest wywoływany w operatorze „$ grupy”. Przykład pomoże ci lepiej zrozumieć akumulator „$ push” „grupy $”.

> db.Książki.agregat(
[[[
$ grupa: _id: „$ _id”, rok: $ push: „$ rok”
]
).ładny();

Tutaj chcemy zgrupować opublikowaną datę roku podanych książek w tablicy. Powyższe zapytanie należy zastosować, aby to osiągnąć. Zapytanie do agregacji jest wyposażone w wyrażenie, w którym operator „$ grupa” przyjmuje wyrażenie pola „_id” i wyrażenie pola „roku”, aby uzyskać rok grupowy za pomocą $ push akumulator. Wyjście pobrane z tego konkretnego zapytania tworzy gamę pól rocznych i przechowuje w nim zwrócony dokument zgrupowany.

Przykład nr 3: Zastosowanie agregacji grupy z akumulatorem „$ min”

Następnie mamy akumulator „$ min”, który jest używany w agregacji grupy $, aby uzyskać minimalną wartość dopasowywaną z każdego dokumentu w kolekcji. Wyrażenie zapytania dla akumulatora $ min jest podane poniżej.

> db.Książki.agregat([

$ grupa:
_ID:
Tytuł: „$ tytuł”,
Order_status: „$ order_status”
,
Minprice: $ min: '$ cena'


])

Zapytanie ma wyrażenie agregacji „$ grupa”, w których zgrupowaliśmy dokument dla pól „tytuł” ​​i „order_status”. Następnie dostarczyliśmy akumulator $ min, który zgrupował dokumenty, otrzymując minimalne wartości cen z pola zorganizowanych. Kiedy uruchomimy to zapytanie $ min akumulator poniżej, zwraca zgrupowane dokumenty według tytułu i order_status w sekwencji. Minimalna cena pojawia się pierwsza, a najwyższa cena dokumentu jest ostatnia.

Przykład nr 4: Użyj agregacji grupy $ z akumulatorem $ sum

Aby uzyskać sumę wszystkich pól numerycznych za pomocą operatora grupy $, operacja akumulatora $ sum jest wdrożona. Wartości nie-numeryczne w kolekcjach są brane pod uwagę przez ten akumulator. Ponadto używamy tutaj agregacji $ mecz z agregacją grupy $. Agregacja $ Match akceptuje warunki zapytania podane w dokumencie i przekazuje dopasowany dokument do agregacji grupy $, która następnie zwraca sumę dokumentu dla każdej grupy. W przypadku akumulatora $ sum zapytanie jest przedstawione poniżej.

> db.Książki.agregat([
$ match: order_status: 'in-stock',
$ grupa: _id: '$ autor.Nazwa ', Totalbooks: $ sum: 1
])

Powyższe zapytanie agregacji rozpoczyna się od operatora $ mecz, który pasuje do wszystkich „order_status”, którego status jest „w magazynie” i przekazany do grupy $ jako wejście. Następnie operator grupy $ ma wyrażenie akumulatora $ sum, które wyświetla sumę wszystkich książek w akcji. Zauważ, że „$ sum: 1” dodaje 1 do każdego dokumentu należącego do tej samej grupy. Wyjście tutaj pokazało tylko dwa zgrupowane dokumenty, które mają „order_status” powiązane z „w magazynie”.

Przykład nr 5: Użyj agregacji grupy $ z agregacją $ sort

Operator grupy $ jest używany z operatorem „$ sort”, który służy do sortowania zgrupowanych dokumentów. Poniższe zapytanie ma trzy kroki do operacji sortowania. Pierwszy jest etap $ mecz, a następnie $ grupy, a ostatni jest etapem $ sort, który sortuje zgrupowany dokument.

> db.Książki.agregat([
$ match: order_status: 'out-of-plack',
$ grupa: _id: authorname: '$ autor.Nazwa ', Totalbooks: $ sum: 1,
$ sort: authorname: 1
])

Tutaj przyniosliśmy dopasowany dokument, którego „order_status” jest poza magazynem. Następnie dopasowany dokument znajduje się na etapie $ grupy, który zgrupował dokument w polu „Authorname” i „Totalbooks”. Wyrażenie grupy $ jest powiązane z akumulatorem $ sum do całkowitej liczby książek „poza magazynem”. Dokumenty zgrupowane są następnie sortowane z wyrażeniem $ sort w kolejności rosnącej, ponieważ „1” wskazuje tutaj zamówienie rosnące. Sortowany dokument grupy w określonej kolejności jest uzyskiwany w następującym wyjściu.

Przykład nr 6: Użyj agregacji grupy $ dla odrębnej wartości

Procedura agregacji grupuje również dokumenty według przedmiotu za pomocą operatora grupy $ w celu wyodrębnienia odrębnych wartości elementów. Miejmy wyrażenie zapytania tego stwierdzenia w MongoDB.

> db.Książki.agregate ([$ grupa: _id: „$ title”])).ładny();

Zapytanie do agregacji jest stosowane do kolekcji książek, aby uzyskać odrębną wartość dokumentu grupy. Grupa $ tutaj przyjmuje wyrażenie _id, które wyświetla odrębne wartości, ponieważ wprowadzamy do niej pole „Tytuł”. Dane wyjściowe dokumentu grupy jest uzyskiwane po uruchomieniu tego zapytania, które ma grupę nazw tytułów na polu _id.

Wniosek

Przewodnik miał na celu wyczyszczenie koncepcji operatora agregacji grupy $ do grupowania dokumentu w bazie danych MongoDB. Podejście kruszywa MongoDB poprawia zjawiska grupowania. Struktura składniowa operatora grupy $ została wykazana z przykładowymi programami. Oprócz podstawowego przykładu operatorów grupy $, zatrudniliśmy tego operatora z niektórymi akumulatorami, takimi jak $ push, $ min, $ suma i operatorzy tacy jak $ mecz i $ sort.