Mongodb $ runde

Mongodb $ runde
Mens vi jobbet med numeriske verdier, kom vi over mange desimalverdier som inneholder 1 eller flere flytende punkter på slutten. I matematikk kan vi konvertere flottørverdiene for å gjøre dem til en hel verdi ved å avrunde flytepunktene etter “prikken”. Det er visse regler for å avrunde desimalpunktverdier i.e., kan bare være avrundet til neste påfølgende verdi hvis float-punktverdien etter prikken er "5". Mens du jobber med MongoDB, kan du komme over desimalverdier og vil konvertere dem til hele tall. For å gjøre det, gir MongoDB oss den "runde" operatøren til å bruke innenfor den samlede funksjonen. I denne guiden vil vi se hvordan vi kan bruke den.

Lag databasesamling

Vi har startet MongoDB -skallet og vist alle tilgjengelige databaser via "Show DBS" -spørsmålet til MongoDB. Utgangen fra denne instruksjonen viser 3 innebygde databaser mens dummy-databasen “Test” allerede blir brukt.

Test> Vis DBS
Admin 40.00 KIB
konfigurasjon 72.00 KIB
Lokal 72.00 KIB

Hvis du vil bruke en bestemt database, kan du kjøre "bruk" -instruksjonen sammen med databasenavnet, og du vil bruke den aktuelle databasen om et øyeblikk.

Test> Bruk test
Allerede på DB -test

Nå som vi er ferdige med å bevege oss innenfor arbeidsområdet til "Test" -databasen, har vi lov til å lage samlinger i den. Derfor skal vi lage en samling som heter "Order" i denne "test" -databasen ved bruk av "CreateCollection" -funksjonen i instruksjonen. Spørringen for å lage en samling sammen med utdataene er påvist nedenfor.

Test> DB.CreateCollection ("Order")
OK: 1

For å få alle samlingene i "Test" -databasen som.

Test> Vis samlinger
Rekkefølge

Sett inn dokumenter til innsamling

Etter at samlingen “Order” er generert, kan vi ikke la den være tom, da vi må jobbe med desimalpunkter for å bruke den runde operatøren av MongoDB. Derfor må vi sette inn minst ett felt som inneholder desimalpunktverdier i det. Så vi har prøvd InsertMany -funksjonen i instruksjonen foran navnet på en samling "ordre" for å sette inn totalt 3 dokumenter. Hvert dokument inneholder 3 felt i.e., "Tittel" -feltet for strengtype, "pris" -feltet for heltallstype og "skatt" -feltet for float -type. Skattefeltet inneholder verdier med 1 eller flere flytende punkter.

Test> DB.Rekkefølge.InsertMany ([Tittel: "Pizza", pris: 4500, skatt: 99.5,
… Tittel: "Burger", pris: 4200, skatt: 49.56, tittel: "tallerken", pris: 3900, skatt: 55.25])

Anerkjent: sant,
innsats:
'0': ObjectId ("63b5a193639e00f0b5c51fae"),
'1': ObjectId ("63b5a193639e00f0b5c51faf"),
'2': ObjectId ("63b5a193639e00f0b5c51fb0")

Etter å ha satt inn disse tre dokumentene i "Order" -samlingen av databasen, vil vi vise disse på MongoDB -konsollen og se på dem klart på dem. For dette vil vi kaste av "finn" -funksjonen til MongoDB foran med navnet på en samling "orden" i instruksjonen. Bruk krøllete parentes “” i argumentet for å vise denne samlingen er alle dokumenter uten å spesifisere en. Utgangen for denne instruksjonen har vist totalt 3 dokumenter under.

Test> DB.Rekkefølge.finne()
[

_ID: ObjectID ("63B5A193639E00F0B5C51FAE"),
Tittel: 'Pizza',
Pris: 4500,
Skatt: 99.5
,

_ID: ObjectID ("63B5A193639E00F0B5C51FAF"),
Tittel: 'Burger',
Pris: 4200,
Skatt: 49.56
,

_ID: ObjectID ("63B5A193639E00F0B5C51FB0"),
Tittel: 'tallerken',
Pris: 3900,
Skatt: 55.25

]

Eksempel # 01:

Nå som vi er ferdige med forutsetningene og setter opp databasen, skal vi bruke den runde operatøren i MongoDB Shell -instruksjon for å konvertere desimalverdiene til hele tall. Siden vi bare har et "skatt" -felt som inneholder desimalverdiene, vil vi bare bruke den runde operatøren på den. For å bruke den runde operatøren, må vi bruke aggregatfunksjonen til MongoDB i instruksjonen. Denne instruksjonen starter sine argumenter med operatøren “Project” etterfulgt av den runde operatøren.

Du kan også navngi feltet for utdata som skal vises for desimalpunktverdier i.e., avrundede verdier. Deretter må operatøren "runde" inneholde navnet på et felt som skal oppdateres sammen med det totale antallet desimalpunkter du vil at det skal bli avrundet av. I vårt tilfelle avrundet vi alle "skatte" feltverdier med 1 og fikk de modifiserte verdiene i produksjonen. Disse verdiene inneholder 1 desimal punktverdi nå: 99.5 å forbli 99.5 som det bare har 1 desimalpunkt allerede, 49.56 til 49.6 etter avrunding 6 og 55.25 til 55.2.

Test> DB.Rekkefølge.Aggregate ([$ prosjekt: RoundedValue: $ runde: ["$ skatt", 1]])
[
_ID: ObjectId ("63B5A193639E00F0B5C51FAE"), RoundedValue: 99.5,
_id: ObjectId ("63B5A193639E00F0B5C51FAF"), RoundedValue: 49.6,
_ID: ObjectId ("63B5A193639E00F0B5C51FB0"), RoundedValue: 55.2
]

Når du kjører Find () -funksjonen for å se feltet "skatt" for alle dokumenter, vil du se at postene ikke blir oppdatert i samlingen fordi den runde operatøren bare fungerer på kjøretid.

Test> DB.Rekkefølge.finne()
[

_ID: ObjectID ("63B5A193639E00F0B5C51FAE"),
Tittel: 'Pizza',
Pris: 4500,
Skatt: 99.5
,

_ID: ObjectID ("63B5A193639E00F0B5C51FAF"),
Tittel: 'Burger',
Pris: 4200,
Skatt: 49.56
,

_ID: ObjectID ("63B5A193639E00F0B5C51FB0"),
Tittel: 'tallerken',
Pris: 3900,
Skatt: 55.25

]

Hvis du vil få et helt tall i stedet for en desimalpunktverdi, kan du bruke det totale antallet desimalpunkter “0” i spørringen. Derfor har vi oppdatert den samme instruksjonen for "skatt" -feltet og erstattet 1 med 0. Etter å ha utført den samlede funksjonsspørsmålet, har vi hele tallverdiene for feltet "skatt" for alle 3 dokumenter fra "Order" -samlingen i.e., 99.5 til 100, 49.56 til 50 og 55.25 til 55.

Test> DB.Rekkefølge.Aggregate ([$ Project: RoundedValue: $ Round: ["$ Tax", 0]])
[
_id: ObjectId ("63b5a193639e00f0b5c51fae"), RoundedValue: 100,
_id: ObjectId ("63B5A193639E00F0B5C51FAF"), RoundedValue: 50,
_ID: ObjectId ("63B5A193639E00F0B5C51FB0"), RoundedValue: 55
]

Nå, kjører det samme Find () -funksjonsinstruksjonen i MongoDB -skallet, har vi samme utgang som vi har i illustrasjonen ovenfor i.e. Ingen endring fordi runden bare fungerer på kjøretid.

Test> DB.Rekkefølge.finne()
[

_ID: ObjectID ("63B5A193639E00F0B5C51FAE"),
Tittel: 'Pizza',
Pris: 4500,
Skatt: 99.5
,

_ID: ObjectID ("63B5A193639E00F0B5C51FAF"),
Tittel: 'Burger',
Pris: 4200,
Skatt: 49.56
,

_ID: ObjectID ("63B5A193639E00F0B5C51FB0"),
Tittel: 'tallerken',
Pris: 3900,
Skatt: 55.25

]

Eksempel # 02:

La oss bruke en annen måte å bruke den runde operatøren i MongoDB -skallet for å avrunde desimalpunktverdiene i.e., ganske samme med en liten forskjell i plassering av operatører og argumenter. Innenfor den samlede funksjonen vil du plassere argumentene i samme matriseformat fra bruk av prosjektoperatøren. Vi skal bruke navnet på et felt som skal oppdateres og angi statusen som "1" for å vise dens faktiske verdi som bor i samlingen akkurat nå.

Deretter vil vi legge til et nytt felt som heter 'verdi' etterfulgt av den runde operatøren og navnet på et felt "skatt" som argument for å gjøre det oppdatert. Det vil konvertere alle desimalpunktverdiene til et helt tall etter å ha avrundet desimalpunktene på slutten. Utgangen viser de opprinnelige "skatt" -feltverdiene sammen med de oppdaterte avrundede verdiene i feltet "verdi".

Test> DB.Rekkefølge.Aggregate ([$ prosjekt: skatt: 1, verdi: $ runde: ["$ skatt"]])
[
_id: ObjectId ("63b5a193639e00f0b5c51fae"), skatt: 99.5, verdi: 100,
_id: ObjectId ("63B5A193639E00F0B5C51FAF"), skatt: 49.56, verdi: 50,
_id: ObjectId ("63b5a193639e00f0b5c51fb0"), skatt: 55.25, verdi: 55
]

Konklusjon

Etter å ha diskutert konseptet med å avrunde desimalverdiene innen matematikkfeltet, har vi diskutert hvordan den "runde" operatøren av MongoDB kan støpes for å avrunde verdier med flere punkter. For å fjerne bruken av den runde operatøren i MongoDB, har vi demonstrert to eksempler som inneholder den samlede funksjonen som bruker den runde operatøren. Ved å bruke disse eksemplene har vi avrundet verdiene med 1 og 2 poeng ved kjøretid mens vi også har sett at bruken av den runde operatøren ikke endrer den faktiske verdien i samlingen.