MongoDB $ Datetrunc

MongoDB $ Datetrunc

MongoDB gir den samlede $ Datetrunc -operatøren for å avkutte dataene i henhold til den gitte datoen. $ Datetrunc -operatøren tar bare enkeltdatoverdien for å avkutte den i ISO -format. "Dato" -argumentet til $ Datetrunc tar datoverdiene sammen med tidsenheten. $ Datetrunc -operatøren må kreve at disse inngangene avkortet datoen. Videre kan vi også bruke valgfrie argumenter som tidssone, binsize og startofweek for å senke grensen til datoen innenfor en tidsområde. $ Datetrunc -operatøren deler tiden inn i binsize tidsintervaller i den valgte tidsenheten for beregning.

Hvordan bruke $ Datetrunc -operatøren i MongoDB?

$ Datetrunc -operatøren brukes i MongoDB for å avkortes den gitte datoen. Her jobber vi med samlingen “Blomster” hvis dokumenter brukes av $ Datetrunc -operatøren for demonstrasjonen. For dette må vi legge til dokumentene i samlingen “Blomster” ved å bruke InsertMany () -metoden. Utgangen etter å ha utført kommandoen for innsetting av dokumenter viser at dokumentene nå er lagret i "Blomster" -samlingen.

db.Blomster.INSERTMANY ([
_id: 0, type: "rose", ordre: ny dato ("2023-03-23t15: 06: 20z"), Antall: 100,
°,
°,
°,
°,
_id: 5, type: "solsikke", bestill: ny dato ("2021-03-19t12: 12: 12z"), Antall: 50
])

Merk at det er et felt i dokumentet som er angitt med datoverdiene. Vi kommer til å avkort disse datoene ved å bruke $ Datetrunc -operatøren av MongoDB.

Writeconcernerrors: [],
Sett inn: [[
Indeks: 0, _id: 0,
Indeks: 1, _id: 1,
Indeks: 2, _id: 2,
Indeks: 3, _id: 3,
indeks: 4, _id: 4,
Indeks: 5, _id: 5
],
NinSerted: 5,
Nupserted: 0,
nMatched: 0,
Nmodified: 0,
Nremoved: 0,
Oppsatt: []

Eksempel 1: Bruke $ Datetrunc -operatøren for å avkutte datoen i MongoDB

Her skal vi distribuere $ Datetrunc -operatøren som ganske enkelt henter den avkortede datoen for den angitte datoen. Vi har gitt et spørsmål på MongoDB -skallet der det brukes en samlet metode for å utføre de andre operatørene. Vi kalte $ prosjektmetoden for å inkludere feltene “_id” og “_order” fra det matchede dokumentet. Deretter satte vi et annet felt "avkortet oppslag" som viste resultatene fra $ Datetrunc -operatøren. Vi har definert $ Datetrunc -operatøren som sendes med parameteren "Dato" og spesifisert med feltet "$ Order" med datoverdier. $ Dato -parameteren til $ Datetrunc -operatøren avkortet datoen med UTC. Deretter har vi passert "enhet" -parameteren der tiden er uttrykt som en streng "dag". "Dagen" -verdien indikerer at isodatet for begynnelsen av dagen som returneres av $ Datetrunc på dato.

db.Blomster.aggregat ([

$ prosjekt:
_id: 1,
Bestilling: 1,
avkortetDate:
$ DATETRUNC:
Dato: "$ Bestill", enhet: "Dag"




])

Utgangen fra ovennevnte $ Datetrunc -operatør viste de avkortede datoene for alt dokumentfeltet "ordre" i det avkortede feltet.

[

_id: 0,
Bestilling: Isodate ("2023-03-23T15: 06: 20.000z "),
avkortetdate: Isodate ("2023-03-23t00: 00: 00.000z ")
,

_id: 1,
Bestilling: Isodate ("2021-07-19T12: 11: 10.000z "),
avkortetDate: Isodate ("2021-07-19t00: 00: 00.000z ")
,

_id: 2,
Bestilling: Isodate ("2022-12-12T16: 14: 30.000z "),
avkortetdato: Isodate ("2022-12-12t00: 00: 00.000z ")
,

_id: 3,
Bestilling: Isodate ("2023-08-13T05: 10: 20.000z "),
avkortetdato: Isodate ("2023-08-13t00: 00: 00.000z ")
,

_id: 4,
BESTILLING: ISODATE ("2020-01-01T19: 30: 10.000z "),
avkortet Dato: Isodate ("2020-01-01T00: 00: 00.000z ")
,

_id: 5,
Bestilling: Isodate ("2021-03-19T12: 12: 12.000z "),
avkortetDate: Isodate ("2021-03-19t00: 00: 00.000z ")

]

Eksempel nr. 2: Bruke $ Datetrunc -operatøren med Binsize -argumentet for å avkutte datoen i MongoDB

Det valgfrie binsize -argumentet til $ Datetrunc -operatøren er en tidsverdi som uttrykkes som et numerisk uttrykk. Det numeriske uttrykket må være et positivt ikke-null heltall. Når binsize og enhetsargumentet begge brukes sammen, definerer de perioden for evaluering av $ Datetrunc -operatøren. Vi har tatt dokumentet hvis felt "Type" -verdi "Whiterose" som samsvarer med $ Match Stage Here.

Etter dette er $ Datetrunc -operatøren i $ prosjektoperatøren blitt definert for å avkutte datoen ved hjelp av de medfølgende inngangene. Datetrunc $ tar først inndata "Dato" der "$ ordre" -feltet gis ettersom den inneholder datoverdiene. Deretter har vi satt "enhet" -inngangen med tiden "time" og "binsize" -inngangen med den numeriske verdien "2".

db.Blomster.aggregat ([
$ match: "type": "whiterose",

$ prosjekt:
_id: 1,
Bestilling: 1,
avkortet Result:
$ DATETRUNC:
Dato: "$ Bestill", enhet: "time", binsize: 2




])

"Enhet" -tiden er "time" og "binsize" har en verdi av "2". Så tiden mellom den avkortede datoen returnerer fra $ Datetrunc -operatøren og bestillingsdatoen er to timer.

[

_id: 3,
Bestilling: Isodate ("2023-08-13T05: 10: 20.000z "),
avkortet Result: Isodate ("2023-08-13T04: 00: 00.000z ")

]

Eksempel nr. 3: Bruke $ Datetrunc -operatøren med StartOfWeek -argumentet for å avkutte datoen i MongoDB

Vi har et annet alternativargument "startofweek" av $ Datetrunc -operatøren som spesifiserer begynnelsen av uken. Argumentet "startofweek" bare utføres når "enheten" er uken. Her skaffer vi disse dokumentene fra $ Match -operatøren som $ NIN -operatøren ikke har valgt i uttrykket. Deretter distribuerte vi $ Datetrunc -operatøren i $ Project Stage -feltet “Truncdate”. Argumentene sendes innenfor $ Datetrunc -operatøren for å redusere datoen. Det valgfrie argumentet "startofweek" er også satt inne i $ Datetrunc -operatøren med uken "onsdag". Datetrunc -operatøren for å redusere "orden" -feltet til en "1" binsize og enhet "uke" tidsperiode i UTC tidssone med onsdag som startofweek.

db.Blomster.aggregat ([
$ match: "_id": $ nin: [1, 3, 5],

$ prosjekt:
_id: 1,
Bestilling: 1,
truncdate:
$ DATETRUNC:
Dato: "$ Bestill", enhet: "Uke", Binsize: 1,
Timezone: "UTC", startofweek: "onsdag"




])

Resultatene fra $ Datetrunc -operatøren genereres med de avkortede datoene i en "startofweek" -dag, så vel som de faktiske datoverdiene.

[

_id: 0,
Bestilling: Isodate ("2023-03-23T15: 06: 20.000z "),
TruncDate: Isodate ("2023-03-22t00: 00: 00.000z ")
,

_id: 2,
Bestilling: Isodate ("2022-12-12T16: 14: 30.000z "),
TruncDate: Isodate ("2022-12-07t00: 00: 00.000z ")
,

_id: 4,
BESTILLING: ISODATE ("2020-01-01T19: 30: 10.000z "),
TruncDate: Isodate ("2020-01-01T00: 00: 00.000z ")

]

Eksempel 4: Bruke $ Datetrunc -operatøren til å returnere null i MongoDB

Datetrunc -operatøren returnerer også nullverdien i en sak når "startofweek" legger inn feltet som er enten tomt eller tilordnet null, og når enhetsargumentet har verdien som "uke" og startofweek er ikke spesifisert eller har en null verdi. La oss vurdere denne uttalelsen med eksemplet skriptet til MongoDB. Vi har en ny inkludering av feltet "avkortetOutput" i $ Prosjektfase der vi har utført $ Datetrunc -operatøren. $ Datetrunc -operatøren tar inngangen "Dato" med "Order" -feltet, enheten som en uke, og binsize "2" av en "America/Los_angeles" tidssone. Merk at vi ikke har bestått $ Datetrunc -operatøren med "startofweek" -argumentet ettersom uken er tildelt "enhet" -parameteren.

db.Blomster.aggregat ([

$ prosjekt:
_id: 1,
Bestilling: 1,
avkortetOutput:
$ DATETRUNC:
Dato: "$ OrderDate", enhet: "Uke", Binsize: 2,
Timezone: "America/Los_angeles"




])

Der fikk vi nullresultatet i feltet "avkortetOutput" fordi vi ikke har lagt inn argumentet "startofweek" i $ Datetrunc -operatøren selv om enheten er en uke.

[

_id: 0,
Bestilling: Isodate ("2023-03-23T15: 06: 20.000z "),
avkortetOutput: NULL
,

_id: 1,
Bestilling: Isodate ("2021-07-19T12: 11: 10.000z "),
avkortetOutput: NULL
,

_id: 2,
Bestilling: Isodate ("2022-12-12T16: 14: 30.000z "),
avkortetOutput: NULL
,

_id: 3,
Bestilling: Isodate ("2023-08-13T05: 10: 20.000z "),
avkortetOutput: NULL
,

_id: 4,
BESTILLING: ISODATE ("2020-01-01T19: 30: 10.000z "),
avkortetOutput: NULL
,

_id: 5,
Bestilling: Isodate ("2021-03-19T12: 12: 12.000z "),
avkortetOutput: NULL

]

Eksempel 5: Bruke $ Datetrunc -operatøren for å avkorte datoen inne i $ Group -operatøren i MongoDB

Vi har brukt $ Datetrunc -operatøren i $ Group -stadiet til MongoDB som avkortes datoen innenfor gruppetasten og får sumresultatene fra det spesifiserte feltet. Vi har distribuert $ Group -scenen og gitt en gruppetast "_id" der det nye feltet "truncdate" er opprettet for å utføre $ Datetrunc -operasjonen. Til $ Datetrunc -operatøren har vi innløp "datoen" som et "ordre" -felt med "måned" enhetstid og binsize av "5". Etter det satte vi et annet felt "Addquantity" der $ Sum -operatøren er tildelt med feltet $ Antall for tilleggsoperasjonen.

db.Blomster.aggregat ([

$ gruppe:
_id:
Datetrunc:
$ DATETRUNC:
Dato: "$ Bestilling", enhet: "Måned", Binsize: 5


,
Addquantity: $ sum: "$ qty"


])

Datoen for "ordre" -felt.

[

_ID: Datetrunc: Isodate ("2020-01-01T00: 00: 00.000z "),
Addquantity: 200
,

_ID: Datetrunc: ISODATE ("2020-11-01T00: 00: 00.000z "),
Addquantity: 50
,

_ID: Datetrunc: ISODATE ("2022-12-01T00: 00: 00.000z "),
Addquantity: 199
,

_ID: Datetrunc: Isodate ("2021-04-01T00: 00: 00.000z "),
Addquantity: 150
,

_ID: Datetrunc: Isodate ("2023-05-01T00: 00: 00.000z "),
Addquantity: 500

]

Konklusjon

Vi har dekket en MongoDB -operatør $ Datetrunc som fungerer med datoen for å avkortes dem. Vi har undersøkt forskjellige argumenter fra $ Datetrunc -operatøren med eksempler. $ Datetrunc -operatøren omhandler bare datofeltdokumentene i samlingen av MongoDB. Datetrunc -operatøren brukes her med "Binsize" -argumentet og "startofweek" -argumentet som er valgfritt, men spiller en viktig rolle mens du avkortes datoene i MongoDB.