MongoDB $ runda

MongoDB $ runda
Podczas pracy z wartościami liczbowymi natknęliśmy się na wiele wartości dziesiętnych zawierających 1 lub więcej pływających punktów na końcu. W matematyce możemy przekonwertować wartości pływakowe, aby uczynić je całą wartością, zaokrąglając punkty zmiennoprzecinkowe po „kropce”. Istnieją pewne zasady, aby zaokrąglić wartości punktów dziesiętnych i.mi., może być zaokrąglone tylko do następnej kolejnej wartości, jeśli wartość punktu zmiennoprzecinka po kropce wynosi „5”. Pracując z MongoDB, możesz natknąć się na wartości dziesiętne i chcesz przekonwertować je na liczby. Aby to zrobić, MongoDB zapewnia nam „okrągłego” operatora do użycia w funkcji łącznej. W tym przewodniku zobaczymy, jak możemy z niego korzystać.

Utwórz kolekcję bazy danych

Rozpoczęliśmy powłokę MongoDB i wyświetliśmy wszystkie dostępne bazy danych za pośrednictwem zapytania „pokaż DBS” MongoDB. Wyjście tej instrukcji pokazuje 3 wbudowane bazy danych, podczas gdy „test” bazy danych jest już wykorzystywany.

Test> Pokaż DBS
admin 40.00 kib
Config 72.00 kib
Lokalny 72.00 kib

Jeśli chcesz użyć określonej bazy danych, uruchom instrukcję „Użyj” wraz z nazwą bazy danych, a za chwilę będziesz używać konkretnej bazy danych.

Test> Użyj testu
już w teście DB

Teraz, gdy skończyliśmy poruszanie się w przestrzeni roboczej „testowej” bazy danych, możemy tworzyć w niej kolekcje. Dlatego utworzymy kolekcję o nazwie „Zakaz” w tej bazie danych „test” za pomocą funkcji „CreateCollection” w instrukcji. Zapytanie o tworzenie kolekcji wraz z jego wyjściem zostało pokazane poniżej.

Test> db.CreateCollection („zamów”)
OK: 1

Aby uzyskać wszystkie kolekcje bazy danych „test” wymienionych na powładzie MongoDB, użyj wyświetlanego zapytania, a otrzymasz tam również „Zamów” kolekcji.

Test> Pokaż kolekcje
Zamówienie

Wstaw dokumenty do zbierania

Po wygenerowaniu kolekcji „zamówienie” nie możemy pozostawić go pustego, ponieważ musimy pracować nad punktami dziesiętnymi, aby wykorzystać okrągłego operatora MongoDB. Dlatego musimy wstawić co najmniej jedno pole, które zawiera w nim wartości punktowe dziesiętne. Tak więc próbowaliśmy funkcji InsertMany w instrukcji poprzedzonej nazwą „Zamów” zbioru, aby wstawić 3 dokumenty. Każdy dokument zawiera 3 pola i.mi., pole „tytułu” typu ciągów, pole „ceny” typu liczb całkowitych i pole „podatku” typu pływaka. Pole podatkowe zawiera wartości z 1 lub więcej pływającymi punktami.

Test> db.Zamówienie.InsertMany ([tytuł: „pizza”, cena: 4500, podatek: 99.5,
… Tytuł: „Burger”, cena: 4200, podatek: 49.56, tytuł: „talerz”, cena: 3900, podatek: 55.25])

Uznany: prawda,
InsertedIds:
„0”: ObjectID (”63B5A193639E00F0B5C51FAE”),
„1”: ObjectID (”63B5A193639E00F0B5C51FAF”),
„2”: ObjectID (”63B5A193639E00F0B5C51FB0”)

Po włożeniu tych 3 dokumentów do kolekcji „zamów” bazy danych, będziemy je wyświetlać na konsoli MongoDB i rzucimy na nie wyraźne spojrzenie. W tym celu będziemy odrzucić funkcję „Znajdź” MongoDB poprzedzoną nazwą kolekcji „zamów” w instrukcji. Użyj nawiasów kręconych „” w argumencie, aby wyświetlić wszystkie dokumenty tej kolekcji bez określenia jednego. Wyjście tej instrukcji wyświetlało w sumie 3 dokumenty poniżej.

Test> db.Zamówienie.znajdować()
[[[

_id: ObjectID („63B5A193639E00F0B5C51FAE”),
Tytuł: „Pizza”,
Cena: 4500,
Podatek: 99.5
,

_id: ObjectID („63B5A193639E00F0B5C51FAF”),
Tytuł: „Burger”,
Cena: 4200,
Podatek: 49.56
,

_id: ObjectID („63B5A193639E00F0B5C51FB0”),
Tytuł: „Talerz”,
Cena: 3900,
Podatek: 55.25

]

Przykład nr 01:

Teraz, gdy skończyliśmy z warunkami wstępnymi i konfigurując bazę danych, użyjemy okrągłego operatora w instrukcji MongoDB Shell, aby przekonwertować wartości dziesiętne na liczby. Ponieważ mamy tylko pole „podatkowe” zawierające wartości dziesiętne, będziemy stosować tylko okrągłego operatora. Aby użyć okrągłego operatora, w instrukcji musimy użyć funkcji agregate () MongoDB. Ta instrukcja rozpoczyna swoje argumenty z „projektem” operatora, a następnie okrągłego operatora.

Możesz także nazwać pole wyjściowe, które mają być wyświetlane dla wartości dziesiętnych i.mi., zaokrąglone wartości. Następnie operator „okrągły” musi zawierać nazwę pola, aby zostać zaktualizowana wraz z całkowitą liczbą punktów dziesiętnych, które chcesz, aby został zaokrąglony. W naszym przypadku zaokrągliliśmy wszystkie wartości pola „podatkowe” o 1 i otrzymaliśmy zmodyfikowane wartości w wyniku. Wartości te zawierają teraz 1 punkt po przecinku: 99.5 pozostać 99.5, ponieważ ma już tylko 1 punkt po przecinku, 49.56 do 49.6 Po zakończeniu 6 i 55.25 do 55.2.

Test> db.Zamówienie.agregate ([$ projekt: zaokrąglony wartość: $ runda: [„$ podatek”, 1]])))
[[[
_id: ObjectID („63B5A193639E00F0B5C51FAE”), zaokrąglony wartość: 99.5,
_ID: ObjectID („63B5A193639E00F0B5C51FAF”), zaokrąglony wartość: 49.6,
_ID: ObjectID („63B5A193639E00F0B5C51FB0”), zaokrąglony wartość: 55.2
]

Po uruchomieniu funkcji Find (), aby zobaczyć „podatek” w terenie wszystkich dokumentów, zobaczysz, że rekordy nie są aktualizowane w kolekcji, ponieważ okrągły operator działa tylko w czasie wykonywania.

Test> db.Zamówienie.znajdować()
[[[

_id: ObjectID („63B5A193639E00F0B5C51FAE”),
Tytuł: „Pizza”,
Cena: 4500,
Podatek: 99.5
,

_id: ObjectID („63B5A193639E00F0B5C51FAF”),
Tytuł: „Burger”,
Cena: 4200,
Podatek: 49.56
,

_id: ObjectID („63B5A193639E00F0B5C51FB0”),
Tytuł: „Talerz”,
Cena: 3900,
Podatek: 55.25

]

Jeśli chcesz uzyskać liczbę całkowitą zamiast jednego punktu dziesiętnego, możesz użyć całkowitej liczby punktów dziesiętnych „0” w zapytaniu. Dlatego zaktualizowaliśmy tę samą instrukcję dla pola „podatkowego” i zastąpiliśmy 1 na 0. Po wykonaniu zapytania funkcji zagregowanych mamy wartości liczbowe dla pola „Podatek” wszystkich 3 dokumentów z kolekcji „zamów” i.mi., 99.5 do 100, 49.56 do 50 i 55.25 do 55.

Test> db.Zamówienie.agregate ([$ projekt: zaokrąglony wartość: $ runda: [„$ podatek”, 0]])))
[[[
_ID: ObjectID („63B5A193639E00F0B5C51FAE”), zaokrąglony wartość: 100,
_ID: ObjectID („63B5A193639E00F0B5C51FAF”), zaokrąglony wartość: 50,
_ID: ObjectID („63B5A193639E00F0B5C51FB0”), zaokrąglony wartość: 55
]

Teraz, uruchamiając tę ​​samą instrukcję FINK () w powładzie MongoDB, mamy takie samo wyjście, jak na powyższej ilustracji I.mi. Bez zmiany, ponieważ runda działa tylko w czasie wykonywania.

Test> db.Zamówienie.znajdować()
[[[

_id: ObjectID („63B5A193639E00F0B5C51FAE”),
Tytuł: „Pizza”,
Cena: 4500,
Podatek: 99.5
,

_id: ObjectID („63B5A193639E00F0B5C51FAF”),
Tytuł: „Burger”,
Cena: 4200,
Podatek: 49.56
,

_id: ObjectID („63B5A193639E00F0B5C51FB0”),
Tytuł: „Talerz”,
Cena: 3900,
Podatek: 55.25

]

Przykład nr 02:

Użyjmy innego sposobu na wykorzystanie okrągłego operatora w MongoDB Shell, aby zaokrąglić wartości dziesiętne i.mi., Całkiem saolity z niewielką różnicą w umieszczeniu operatorów i argumentów. W ramach funkcji zagregowanej umieścisz argumenty w tym samym formacie tablicy, zaczynając od użycia operatora projektu. Użyjemy nazwy pola, aby zostać zaktualizowanym i ustawić jego status jako „1”, aby wyświetlić jego rzeczywistą wartość przebywającą w kolekcji.

Następnie dodamy nowe pole o nazwie „Wartość”, a następnie okrąg. Konwertuje wszystkie wartości punktów dziesiętnych na liczbę całkowitą po zakończeniu punktów dziesiętnych na końcu. Dane wyjściowe pokazuje oryginalne wartości pola „podatkowe” wraz z zaktualizowanymi wartościami zaokrąglonymi w polu „Wartość”.

Test> db.Zamówienie.agregate ([$ projekt: podatek: 1, wartość: $ runda: [„$ podatek”]])))
[[[
_id: ObjectID („63B5A193639E00F0B5C51FAE”), podatek: 99.5, wartość: 100,
_id: ObjectID („63B5A193639E00F0B5C51FAF”), podatek: 49.56, wartość: 50,
_id: ObjectID („63B5A193639E00F0B5C51FB0”), podatek: 55.25, wartość: 55
]

Wniosek

Po omówieniu koncepcji zaokrąglenia wartości dziesiętnych w dziedzinie matematyki, omówiliśmy, w jaki sposób „okrągły” operator MongoDB może zostać odrzucony, aby zaokrąglić wartości o kilka punktów. Aby wyczyścić użycie okrągłego operatora w MongoDB, zademonstrowaliśmy dwa przykłady zawierające funkcję agregatów, która wykorzystuje okrągły operator. Korzystając z tych przykładów, zaokrągliliśmy wartości o 1 i 2 punkty w czasie wykonywania, podczas gdy widzieliśmy również, że użycie okrągłego operatora nie modyfikuje rzeczywistej wartości w kolekcji.