Maksymalny operator MongoDB

Maksymalny Operator Mongodb



MongoDB wymyślił wielu operatorów do wykonywania transakcji specjalnego przeznaczenia, takich jak aktualizacja rekordów, dodawanie nowego rekordu i wyświetlanie rekordów pod pewnymi warunkami. Jednym z tych operatorów jest operator „$max”, który służy do sprawdzania największej wartości w rekordzie. Poza tym możemy za jego pomocą zaktualizować najmniejszą wartość o nową największą wartość po ich porównaniu w instrukcji funkcji „update”. Innym zastosowaniem operatora „$max” jest grupowanie i wyświetlanie rekordów określonej kolekcji w taki sposób, że może wyświetlać tylko największą wartość, ignorując najmniejszą wartość, gdy w bazie danych znajdują się zduplikowane rekordy. W tym przewodniku użyjemy prostych przykładów zapytań, aby omówić wcześniej wspomniane zastosowania operatora „$max” w narzędziu wiersza poleceń MongoDB na naszej platformie Windows.

Przykład 1:

Rozpoczynając od ilustracji do omówienia, jak działa operator „$max” w powłoce MongoDB, musimy mieć kolekcję o nazwie „data”, która musi być już utworzona. Aby stworzyć tę kolekcję, musimy dodać do niej kilka rekordów bezpośrednio, bez użycia instrukcji „utwórz”. Instrukcja insert wystarczy do stworzenia kolekcji i dodania do niej rekordów. Używamy funkcji „insertMany” w zapytaniu, aby dodać cztery rekordy, z których każdy ma 4 pola różnych typów.

test > db.data.insertWiele ( [ { 'ID' : jeden , 'Imię' : 'Brawo' , 'Pensja' : 65000 , 'Wiek' : 44 } ,
... { 'ID' : 2 , 'Imię' : „Stefan” , 'Pensja' : 77000 , 'Wiek' : 55 } ,
... { 'ID' : 3 , 'Imię' : 'Maria' , 'Pensja' : 42000 , 'Wiek' : 27 } ,
... { 'ID' : 4 , 'Imię' : 'Hawkin' , 'Pensja' : 58000 , 'Wiek' : 33 } ] )







Komenda wstawiania powiodła się, a komunikat wyjściowy pokazuje, że rekordy zostały dodane.



Po wstawieniu rekordów do kolekcji „data” naszego MongoDB, czas zobaczyć te rekordy w powłoce. W ten sposób uruchamiamy instrukcję funkcji „find()” w MongoDB Cli, a następnie funkcję „forEach()”, przyjmując argument printjson, aby wyświetlić wynik w formacie JSON. Wynik wyświetlany w powłoce pokazuje łącznie 4 dokumenty w kolekcji, które są pokazane na poniższym obrazie wyjściowym:



test > db.data.find ( ) .dla każdego ( printjson )





Wypróbujmy operator „$max” w poleceniu aktualizacji MongoDB, aby zmodyfikować już wstawione rekordy. W związku z tym funkcja updateOne() jest tutaj używana do modyfikowania tylko pojedynczego rekordu kolekcji „danych”, na przykład konkretnego rekordu, w którym pole „id” ma wartość „2”. Operator „$max” jest stosowany do pola „Wynagrodzenie” zbioru „dane”, aby sprawdzić, czy pole „Wynagrodzenie” ma wartość większą niż 55000. Jeśli nie, zaktualizuj rekord o 55000. Wynik wyjściowy dla tego zapytanie funkcyjne updateOne(), które pokazuje liczbę modyfikacji „0”, ponieważ rekord „2” ma mniej niż 55000 wartości wynagrodzenia.

test > db.data.updateOne ( { ID: 2 } , { $ maks : { Pensja: 55000 } } )



Po tej aktualizacji wypróbujemy to samo zapytanie funkcji „find()”, aby wyświetlić zmodyfikowany wynik w powłoce wiersza poleceń MongoDB. Ale otrzymujemy to samo wyjście, które otrzymaliśmy przed użyciem instrukcji „update”. Nie było żadnych zmian, ponieważ wartość 77000 jest większa niż 55000.

test > db.data.find ( ) .dla każdego ( printjson )

Wypróbujmy jeszcze raz to samo zapytanie updateOne() z niewielką modyfikacją. Tym razem próbujemy większej wartości, która wynosi „85000” niż wartość „77000”, która już znajduje się w polu „Wynagrodzenie” zbioru „danych”, aby zmienić naszą wydajność. Dane wyjściowe pokazują tym razem liczbę modyfikacji „1”, ponieważ wartość „85000” zastępuje już rezydującą wartość „77000” w polu po dokonaniu porównania tylko z powodu operatora „$max” w tym zapytaniu.

test > db.data.updateOne ( { ID: 2 } , { $ maks : { Pensja: 85000 } } )

Po pomyślnym zastąpieniu mniejszej wartości „77000” nową wartością „85000” za pomocą operatora „$max” MongoDB, w końcu używamy funkcji „find()” w instrukcji „db”, aby sprawdzić tę aktualizację, czy została pomyślnie zaktualizowana, czy nie. Dane wyjściowe pokazują, że wartość w polu „Wynagrodzenie” drugiego rekordu w tej kolekcji jest doskonale zaktualizowana.

test > db.data.find ( ) .dla każdego ( printjson )

Przykład 2:

Przejdźmy do innego przykładu wykorzystania operatora „$max” w MongoDB. Tym razem odrzucamy operator „$max”, aby pogrupować i wyświetlić unikalne rekordy kolekcji, jeśli istnieją duplikaty dla tych samych wartości pól. W tym celu wstawiamy jeszcze 2 rekordy do zbioru „danych” „testowej” bazy danych. Te rekordy zawierają 2 takie same wartości w polu „Nazwa”, które są również w już wstawionych 4 rekordach, a reszta jest inna. Aby wstawić rekordy, używamy tej samej instrukcji „db”, która zawiera funkcję „insertMany”, aby kolekcja „data” została zaktualizowana.

test > db.data.insertWiele ( [ { 'ID' : 5 , 'Imię' : 'Brawo' , 'Pensja' : 35000 , 'Wiek' : Cztery pięć } ,
{ 'ID' : 6 , 'Imię' : 'Hawkin' , 'Pensja' : 67000 , 'Wiek' : 33 } ] )

Instrukcja jest wykonywana pomyślnie.

Teraz, gdy dodano 2 nowe rekordy, możesz je również wyświetlić za pomocą tej samej funkcji „znajdź” w instrukcji „db”, po której następuje funkcja „forEach”. Poniższe dane wyjściowe na obrazie przedstawiają 2 nowe rekordy na końcu tej kolekcji:

test > db.data.find ( ) .dla każdego ( printjson )

Po wyświetleniu 6 rekordów zbioru „danych” jesteśmy gotowi do wykonania na nim funkcji agregującej. W związku z tym funkcja „agregacja” jest wykorzystywana w poniższym zapytaniu. Dzięki tej funkcji używamy operatora „$group” do pogrupowania rekordu zbioru „danych” według unikalnych nazw pola „id” i pola „Wynagrodzenie”. Operator „$max” jest stosowany do pola „Wynagrodzenie” rekordów, aby uzyskać maksymalne wartości do wyświetlenia. Uzyskaj największą wartość z pola Wynagrodzenie” zgodnie z duplikatami nazw w polu „Nazwa”, które jest używane jako „id” do wyświetlenia tego grupowania. Wyświetlane są łącznie 4 rekordy. Najmniejsza wartość (z duplikatów rekordów) jest ignorowana, podczas gdy wyświetlana jest największa wartość.

db.dane.agregacja ( [ { $grupa : { _ID: ' $Nazwa ' , Pensja: { $ maks : ' $Wynagrodzenie ' } } } ] )

Wniosek

Pierwszy akapit tego przewodnika pomaga zrozumieć znaczenie operatorów używanych w MongoDB, zwłaszcza operatora „$max” i jego zastosowania w powłoce MongoDB. Ten przewodnik zawiera dwa przykłady oparte na poleceniach, które są powiązane z operatorem „$max”, aby zademonstrować jego cel. Przeglądając ilustracje MongoDB, będziesz mógł wykonać kilka przydatnych transakcji w bazie danych, czy to zastąpienie już istniejącego rekordu nową wartością, czy wyświetlenie rekordów poprzez ich pogrupowanie za pomocą operatora „$max”.