MongoDB $ ranga

MongoDB $ ranga
Każdy dokument z kolekcji ma odrębny rangę operatora $ rank w MongoDB zgodnie z zestawem zasad sortowania. Ranga zależy od sekwencji rekordów w zestawie wyników. Jest wykorzystywany wraz z operacją $ setWindowFields, aby dodać nowe pole z dostarczoną rangą do każdego rekordu. Ułatwia to ranking dokumentów zgodnie z określonymi standardami, takimi jak wyniki i jest pomocne w zakresie działań, takich jak tworzenie tabel liderów lub tworzenie raportów o wydajności.

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”)
OK: 1

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]))
potwierdzony: prawda,
InsertedIds:
„0”: ObjectID (”63CD0BB2F114CB71B42E38E5”),
„1”: ObjectID (”63CD0BB2F114CB71B42E38E6”),
„2”: ObjectID (”63CD0BB2F114CB71B42E38E7”),
„3”: ObjectID (”63CD0BB2F114CB71B42E38E8”),
„4”: ObjectID (”63CD0BB2F114CB71B42E38E9”),
„5”: ObjectID (”63CD0C1BF114CB71B42E38EA”),
„6”: ObjectID (”63CD0C1BF114CB71B42E38EB”),
„7”: ObjectID (”63CD0C1BF114CB71B42E38EC”),
„8”: ObjectID (”63CD0C1BF114CB71B42E38ED”),
„9”: ObjectID (”63CD0C1BF114CB71B42E38EE”),
„10”: ObjectID (”63CD0CD6F114CB71B42E38EF”),
„11”: ObjectID (”63CD0CD6F114CB71B42E38F0”),
„12”: ObjectID (”63CD0CD6F114CB71B42E38F1”),
„13”: ObjectID (”63CD0CD6F114CB71B42E38F2”),
„14”: ObjectID (”63CD0CD6F114CB71B42E38F3”)

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ć()
[[[
_ID: ObjectID („63CD0BB2F114CB71B42E38E5”), Std: „Nina”, wynik: 56,
_id: ObjectID („63CD0BB2F114CB71B42E38E6”), Std: „Johny”, wynik: 77,
_ID: ObjectID („63CD0BB2F114CB71B42E38E7”), Std: „Eden”, wynik: 32,
_id: ObjectID („63CD0BB2F114CB71B42E38E8”), Std: „Robert”, wynik: 96,
_id: ObjectID („63CD0BB2F114CB71B42E38E9”), std: „lia”, wynik: 12
_ID: ObjectID („63CD0C1BF114CB71B42E38EA”), Std: „Nina”, wynik: 76,
_ID: ObjectID („63CD0C1BF114CB71B42E38EB”), STD: „Johny”, wynik: 87,
_ID: ObjectID („63CD0C1BF114CB71B42E38EC”), Std: „Eden”, wynik: 52,
_ID: ObjectID („63CD0C1BF114CB71B42E38ED”), Std: „Robert”, wynik: 99,
_ID: ObjectID („63CD0C1BF114CB71B42E38EE”), Std: „Lia”, wynik: 42
_ID: ObjectID („63CD0CD6F114CB71B42E38EF”), STD: „Nina”, wynik: 32,
_id: ObjectID („63CD0CD6F114CB71B42E38F0”), STD: „Johny”, wynik: 67,
_ID: ObjectID („63CD0CD6F114CB71B42E38F1”), Std: „Eden”, wynik: 42,
_id: ObjectID („63CD0CD6F114CB71B42E38F2”), STD: „Robert”, wynik: 89,
_ID: ObjectID („63CD0CD6F114CB71B42E38F3”), Std: „Lia”, wynik: -2
]

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: ])
[[[
_ID: ObjectID („63CD0C1BF114CB71B42E38EC”), Std: „Eden”, wynik: 52, RanksCoreForstd: 1,
_id: ObjectID („63CD0CD6F114CB71B42E38F1”), Std: „Eden”, wynik: 42, RanksCoreForstd: 2,
_ID: ObjectID („63CD0BB2F114CB71B42E38E7”), Std: „Eden”, wynik: 32, RanksCoreForstd: 3,
_id: ObjectID („63CD0C1BF114CB71B42E38EB”), STD: „Johny”, wynik: 87, RanksCoreForstd: 1,
_id: ObjectID („63CD0BB2F114CB71B42E38E6”), Std: „Johny”, wynik: 77, RanksCoreForstd: 2,
_ID: ObjectID („63CD0CD6F114CB71B42E38F0”), STD: „Johny”, wynik: 67, RanksCoreForstd: 3,
_ID: ObjectID („63CD0C1BF114CB71B42E38EE”), Std: „Lia”, wynik: 42, RanksCoreForstd: 1,
_ID: ObjectID („63CD0BB2F114CB71B42E38E9”), Std: „Lia”, wynik: 12, RanksCoreForstd: 2,
_id: ObjectID („63CD0CD6F114CB71B42E38F3”), Std: „Lia”, wynik: -2, RanksCoreForstd: 3,
_ID: ObjectID („63CD0C1BF114CB71B42E38EA”), Std: „Nina”, wynik: 76, RanksCoreForstd: 1,
_id: ObjectID („63CD0BB2F114CB71B42E38E5”), Std: „Nina”, wynik: 56, RanksCoreForstd: 2,
_ID: ObjectID („63CD0CD6F114CB71B42E38EF”), STD: „Nina”, wynik: 32, RanksCoreForstd: 3,
_id: ObjectID („63CD0C1BF114CB71B42E38ED”), Std: „Robert”, wynik: 99, RanksCoreForstd: 1,
_id: ObjectID („63CD0BB2F114CB71B42E38E8”), Std: „Robert”, wynik: 96, RanksCoreForstd: 2,
_id: ObjectID („63CD0CD6F114CB71B42E38F2”), STD: „Robert”, wynik: 89, RanksCoreForstd: 3
]

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: ])
[[[
_ID: ObjectID („63CD0C1BF114CB71B42E38EC”), Std: „Eden”, wynik: 32, RanksCoreForstd: 1,
_id: ObjectID („63CD0CD6F114CB71B42E38F1”), Std: „Eden”, wynik: 42, RanksCoreForstd: 2,
_ID: ObjectID („63CD0BB2F114CB71B42E38E7”), Std: „Eden”, wynik: 52, RanksCoreForstd: 3,
_ID: ObjectID („63CD0C1BF114CB71B42E38EB”), STD: „Johny”, wynik: 67, RanksCoreForstd: 1,
_id: ObjectID („63CD0BB2F114CB71B42E38E6”), Std: „Johny”, wynik: 77, RanksCoreForstd: 2,
_id: ObjectID („63CD0CD6F114CB71B42E38F0”), Std: „Johny”, wynik: 87, RanksCoreForstd: 3,
_ID: ObjectID („63CD0C1BF114CB71B42E38EE”), STD: „Lia”, wynik: -2, RanksCoreForstd: 1,
_ID: ObjectID („63CD0BB2F114CB71B42E38E9”), Std: „Lia”, wynik: 12, RanksCoreForstd: 2,
_id: ObjectID („63CD0CD6F114CB71B42E38F3”), Std: „Lia”, wynik: 42, RanksCoreForstd: 3,
_ID: ObjectID („63CD0C1BF114CB71B42E38EA”), Std: „Nina”, wynik: 26, RanksCoreForstd: 1,
_id: ObjectID („63CD0BB2F114CB71B42E38E5”), Std: „Nina”, wynik: 56, RanksCoreForstd: 2,
_ID: ObjectID („63CD0CD6F114CB71B42E38EF”), Std: „Nina”, wynik: 76, RanksCoreForstd: 3,
_id: ObjectID („63CD0C1BF114CB71B42E38ED”), Std: „Robert”, wynik: 89, RanksCoreForstd: 1,
_id: ObjectID („63CD0BB2F114CB71B42E38E8”), Std: „Robert”, wynik: 96, RanksCoreForstd: 2,
_id: ObjectID („63CD0CD6F114CB71B42E38F2”), STD: „Robert”, wynik: 99, RanksCoreForstd: 3
]

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.