Korzystając z kolekcji wyników testów jako przykład, możesz zastosować operator $ rank, aby uszeregować uczestników zgodnie z ich wynikami testu. Następnie możesz zastosować tę pozycję w kolejnych obliczeniach lub zapytaniach. Znalezienie najlepszych i najniższych wykonawców w zestawie danych, a także porównanie względnej wydajności różnych osób lub grup, jest znaczące. Ten przewodnik pomaga ci dowiedzieć się o korzystaniu z operatora rang w MongoDB.
Utwórz kolekcję MongoDB
Przed przejściem do tematu powinniśmy stworzyć środowisko do pracy. Dlatego już zainstalowaliśmy i skonfigurowaliśmy bazę danych MongoDB na naszym komputerze. Poniższe polecenie jest wykonywane w interfejsie wiersza poleceń MongoDB. „Test” przed symbolem „>” wskazuje, że instrukcja jest wykonywana w bazie danych „Test”. Wykonane polecenie to „DB.CreateCollection („wynik”) ”. To polecenie tworzy nową kolekcję w bazie danych „Test” o nazwie „Wynik”. Odpowiedź to „OK: 1”. Wskazuje to, że polecenie zakończyło się powodzeniem, a kolekcja „wynik” został pomyślnie utworzony. „Test” to nazwa używanej bazy danych.
Test> db.CreateCollection („wynik”)Wstaw rekord do kolekcji
Chociaż stworzyliśmy nową kolekcję, nadal jest pusta. Musimy mieć co najmniej 2 rekordy w kolekcji „Wynik”, aby zastosować na nim operatora rang. Poniższy kod wkłada wiele dokumentów do kolekcji o nazwie „wynik” w bazie danych MongoDB. Każdy rekord obejmuje dwa pola, „std” i „partytura”. Pole „Std” reprezentuje nazwę ucznia, a pole „wynik” reprezentuje ich wynik w teście. Kod włożono łącznie 15 dokumentów, przy czym każdy dokument reprezentuje innego ucznia i ich odpowiedni wynik.
Każdy dokument jest oddzielony przecinkiem i zamknięty w kręconych aparatach ortodontycznych . Wyniki wahają się od -2 do 99, a nazwiska studentów to Nina, Johny, Eden, Robert i Lia. Każdy uczeń ma co najmniej 2 wyniki, które są używane dla 2 różnych przedmiotów. Wstawienie tych dokumentów jest potwierdzone przez bazę danych, a kod zwraca listę unikalnych identyfikatorów (obiekty) dla każdego dokumentu.
Test> db.Wynik.INSERTMANY ([std: „nina”, wynik: 56, std: „johny”, partytura: 77, std: „eden”, wynik: 32, std: „Robert”, wynik: 96 , std: „lia”, wynik: 12, std: „nina”, wynik: 76, std: „Johny”, wynik: 87, std: „Eden”, wynik: 52, STD: „Robert”, wynik: 99, std: „lia”, wynik: 42, std: „nina”, wynik: 32, std: „Johny”, wynik: 67, std: „Eden”, wynik: 42, std: „Robert”, wynik: 89, std: „lia”, wynik: -2]))Wyświetl rekordy MongoDB
Po pomyślnym włożeniu 15 rekordów w kolekcji „Wynik”, ponownie przyjrzymy się wszystkim rekordom. W tym celu polecenie, które użyliśmy. To zapytanie wykorzystuje metodę Find () do pobierania wszystkich dokumentów w kolekcji o nazwie „Wynik”. Metoda Find () służy do zwrócenia szeregu dokumentów w kolekcji „Wynik”, które pasują do określonego zapytania. W takim przypadku nie określono zapytania. Zatem wszystkie 15 dokumentów w kolekcji „Wynik” zostało zwróconych. Dokumenty wyjściowe zawierają trzy pola: _id, std i wynik. Pole _id jest unikalnym identyfikatorem przypisanym do każdego dokumentu przez MongoDB, pole STD zawiera nazwę ucznia, a pole wyników zawiera wynik testu dla każdego ucznia.
Test> db.Wynik.znajdować()Przykład nr 01: Ranga w kolejności malejącej
To polecenie wykorzystuje metodę agregate () do wykonywania operacji agregacji w kolekcji o nazwie „wynik” w bazie danych MongoDB. Metoda agregate () przyjmuje tablicę jako argument, w którym każdy etap przekształca dane. W takim przypadku pierwszym etapem rurociągu jest operator $ setWindowFields, który ustawia pola okna poprzez podział dokumentów według pola „STD”, sortowanie dokumentów według pola „Wynik” w kolejności malejącej (-1). Następnie określono pole wyjściowe, które tworzy nowe pole o nazwie „RanksCoreForstd” i przypisuje rangę do każdego dokumentu w jego oknie za pomocą operatora $ rank.
Ostateczne wyjście pokazuje dokumenty w kolekcji „wyników” z dodatkowym polem „RanksCoreForstd” dodanym do każdego dokumentu, wskazując ranga ucznia na podstawie ich wyniku. Rekordy są sortowane w kolejności malejącej wyniku i zgrupowane według nazwy studenta. W takim przypadku skrypt zajmuje uczniów na podstawie ich wyników. Uczeń o najwyższym wyniku ma rangę 1, uczeń z drugim najwyższym wynikiem ma stopień 2 i tak dalej.
Test> db.Wynik.agregate ([$ setWindowFields: paritionby: "$ std", sortby: score: -1, wyjście: ranksCoreForstd: $ rank: ])Przykład nr 02: Ranga w kolejności rosnącej
Na powyższej ilustracji uszeregowaliśmy dokumenty w kolejności malejącej pola wyniku za pomocą wartości wyniku „-1”. Tym razem przeprowadzimy operację rang we wszystkich dokumentach w kolejności rosnącej pola wyników. W tym celu istnieje niewielka modyfikacja w tym samym poleceniu agregatowym, zaczynając od metody agregate (), która jest używana do przetwarzania danych i zwracania wyniku w formie jednego lub więcej dokumentów.
Operator $ setWindowFields służy do dodania nowego pola do każdego dokumentu na podstawie określonej funkcji okna. Polecenie ustawia pola okna poprzez podział dokumentów według pola „STD”, sortowanie dokumentów według pola „Wynik” w kolejności rosnącej (1) za pomocą wartości „1”, a następnie dodanie nowego pola o nazwie „RanksCoreForstd” przypisuje rangę do każdego dokumentu na podstawie wyniku. Dane wyjściowe pokazuje tablicę wszystkich dokumentów w kolekcji „Wynik”, z dodatkowym polem „RanksCoreForstd” dla każdego dokumentu. W takim przypadku każdemu uczniowi przypisuje się unikalną rangę, a dokumenty są sortowane w kolejności rosnącej wyniku.
Test> db.Wynik.agregate ([$ setWindowFields: paritionby: "$ std", sortby: partytura: 1, wyjście: ranksCoreForstd: $ rank: ])Wniosek
Po wprowadzeniu operatora rangi MongoDB omówiliśmy jego użycie w MongoDB. Następnie stworzyliśmy środowisko do pracy i dodaliśmy przykłady MongoDB w celu dokładniejszego wykorzystania operatora rangi. Pierwszy przykład pokazuje użycie operatora rang z wartością „-1” do wyświetlania dokumentów w kolejności malejącej. Podczas gdy drugi przykład obejmuje jego użycie z wartością „1” do wyświetlania i uszeregowania dokumentów w kolejności rosnącej kolekcji.