MongoDB $ DateFromParts og $ DateToparts -operatører

MongoDB $ DateFromParts og $ DateToparts -operatører
MongoDB $ DateFromParts og $ DateToparts -operatører er en del av aggregeringsmetoden. Disse operatørene brukes til å utføre datooperasjonen i MongoDB. $ DateFromParts -operatøren oppretter og returnerer et dokument med datastrukturen fra de konstituerende delene av datoen i MongoDB. Det tar et individuelt felt for hver datoprøvdelag. Mens operatøren på $ Datetoparts gir et dokument med individuelle funksjoner for hver del av en spesifisert BSON -dato -verdi. Dato -delene som returneres fra $ DatetParts -operatøren blir bestått som parametere inne i operatøren for $ DateFromParts.

Hvordan fungerer $ datefromparts og $ datetoparts i mongoDB

Bruken av $ DateFromParts og $ Datetoparts -operatørene demonstreres her for å hente datoene deretter. Vi krever innsamling av MongoDB som brukes til å samarbeide med disse operatørene. Vi gir en "ChildbirthDate" -samling der følgende dokumenter settes inn ved hjelp av innsettingskommandoen til MongoDB.

db.Fødselsdato.INSERTMANY ([

"_id": 1,
"Birth_year": 2021,
"Birth_month": 09,
"Birth_day": 21,
"Birth_hour": 15,
"Birth_minute": 60,
"Birth_second": 31
,

"_id": 2,
"Birth_year": 2021,
"Birth_month": 09,
"Birth_day": 21,
"Birth_hour": 15,
"Birth_minute": 60,
"Birth_second": 31,
,

"_id": 3,
"Birth_year": 2023,
"Birth_month": 16,
"Birth_day": 90,
"Birth_hour": 47,
"Birth_minute": 190,
"Birth_second": 697
,

"_id": 4,
"Birth_year": 2022,
"Birth_month": 0,
"Birth_day": 0,
"Birth_hour": 0,
"Birth_minute": 0,
"Birth_second": 0
,

"_id": 5,
"Child_name": "Emily",
"DOB": Isodate ("2023-01-06T22: 35: 12.130z ")
,

"_id": 6,
"Child_name": "Kim",
"DOB": Isodate ("2022-11-05T23: 10: 16.125Z ")

])

Dokumentene settes inn i den oppgitte samlingen som vist i forrige utdata. Vi kan bruke disse dokumentene til å spørre $ DateFromParts og $ DateToparts -operatører. Merk at vi bruker over operatøren for $ DateFromParts i de fire første dokumentene fordi datoene i disse dokumentene er skilt bort. Bortsett fra det, bruker operatøren på $ Datetoparts de to siste dokumentene siden de inneholder enkeltdatoobjekter.


Anerkjent: sant,
Sett inn: '0': 1, '1': 2, '2': 3, '3': 4, '4': 5, '5': 6

Eksempel 1: Bruke operatøren for $ DateFromParts i MongoDB

Operatøren på $ DateFromParts brukes her over det første dokumentet i den gitte samlingen for å få enkeltdatoobjektet. Uttrykk "_id: 1" er spesifisert til $ Match Stage. Deretter har vi $ prosjektstadiet der "Dateresult" -feltet settes inn for å distribuere $ DateFromParts -operatøren. $ DateFromParts -operatøren legger inn bestanddelparametrene til datoen sammen med de spesifiserte feltene i det matchede dokumentet for å gi datoobjektet.

db.Fødselsdato.aggregat ([
$ match: _id: 1,

$ prosjekt:
Dateresult:
$ dateFromParts:
"År": "$ Birth_year", "Month": "$ Birth_month", "Day": "$ Birth_day", "Hour": "$ Birth_hour"




])

Enkeltdatoen blir hentet fra alle delene av datoene i utdataene fra $ DateFromParts -operatøren.

[_id: 1, Dateresult: Isodate ("2021-09-21T15: 00: 00.000z ")]

Eksempel 2: Bruke operatøren for $ DateFromParts med en spesifisert tidssone i MongoDB

Vi kan også bruke TimeZone -parameteren i operatøren for $ DateFromParts for å få datoobjektet for en gitt tidssone. Vi bruker først $ Match -operatøren for å matche det forhåndsdefinerte dokumentet som er "_id: 2". Deretter påkaller vi $ DateFromParts -operatøren i "Dato" -feltet i $ Prosjektfasen. Vi bruker alle dataparametere som er nødvendige for å få datoobjektet i tillegg til parameteren "Timezone". "Timezone" får en tidssone av "Europa/London" for å få den resulterende datoen i den spesifiserte sonen.

db.Fødselsdato.aggregat ([
$ match: _id: 2,

$ prosjekt:
Dato:
$ dateFromParts:
"År": "$ Birth_year", "Month": "$ Birth_month",
"Dag": "$ Birth_Day", "Hour": "$ Birth_hour",
"Minute": "$ Birth_minute", "Second": "$ Birth_second", "Timezone": "Europe/London"



])

Operatøren $ DateFromParts returnerer følgende dato -objekt for den gitte tidssonen:

[_id: 2, dato: Isodate ("2021-09-21T15: 00: 31.000z ")]

Eksempel 3: Bruke operatøren for $ DateFromParts med et større utvalg av datoer i MongoDB

Her får vi datoobjektet fra det andre dokumentet hvis datadeler er større enn rekkevidden. Innenfor $ DateFromParts -operatøren bruker vi bestanddelparametrene for å generere et enkelt objekt på datoen fra området som er større enn de angitte datoverdiene. Vi setter feltene fra dokumentene i henhold til de spesifiserte bestanddelparametrene. Operatøren $ DateFromParts øker året “2023” til “2024” og setter deretter månedens verdi til “12” for å gi enkeltdatoobjektet fra de ugyldige datoverdiene.

db.Fødselsdato.aggregat ([
$ match: _id: 3,

$ prosjekt:
Datefromparts:
$ dateFromParts:
"År": "$ Birth_year",
"Måned": "$ Birth_month",
"Dag": "$ Birth_day",
"time": "$ fødsel_hour",
"Minute": "$ Birth_minute",
"Second": "$ Birth_second"




])

Som det fremgår av utdataene, skiller dato -bestanddelene i det returnerte datoobjektet seg fra de tilsvarende datoverdiene i dokumentet. Årsaken er at datoen ble beregnet på nytt av $ datefromparts for å ta dataparametrene i betraktning som er utenfor det forventede området.

[_id: 3, DateFromParts: Isodate ("2024-07-01T02: 21: 37.000z ")]

Eksempel 4: Bruke operatøren for $ DateFromParts med et område mindre enn de spesifiserte datoene i MongoDB

Nå har vi et annet tilfelle av $ DateFromParts -operatøren der datoverdiene er mindre enn det gyldige området for datoer. Vi samsvarer med dokumentet som inneholder dato- og tidsfeltene utover deres respektive akseptable områder. Dokumentet hvis "_id" er "3" sendes inne i $ Match Stage -uttrykket. Etter det oppretter vi feltet “DateFromParts” i $ Prosjektfasen. "DateFromParts" -feltet er ansatt i $ DateFromParts -operatøren. Operatøren for $ DateFromParts sendes med de tilhørende parametrene for å få datoobjektet. Siden vi har alle verdiene på dataparametrene i det matchede dokumentet som er null som er mindre enn minimumsverdiene for datoområdene, tilbakestiller operatøren på $ DateFromParts alle dato -parametere for å generere enkeltdatoobjektet.

db.Fødselsdato.aggregat ([
$ match: _id: 4,

$ prosjekt:
Datefromparts:
$ dateFromParts:
"År": "$ Birth_year",
"Måned": "$ Birth_month",
"Dag": "$ Birth_day",
"time": "$ fødsel_hour",
"Minute": "$ Birth_minute",
"Second": "$ Birth_second"




])

Den resulterende enkelt ISO -datoen dannes i det følgende av operatøren for $ DateFromParts som slipper året “2022” med en og begrenser måneden til 12.

[_id: 4, DateFromParts: Isodate ("2021-11-30t00: 00: 00.000z ")]

Eksempel 5: Bruke operatøren på $ Datetoparts i MongoDB

Nå bruker vi en annen $ DateToparts -operatør som datoen er oppnådd. Her har vi en enkel demonstrasjon der vi samsvarer med "_id" hvis verdi er "5" i det første stadiet. Etter å ha matchet dokumentet, får $ prosjektstadiet resultatene fra $ DateToparts -operatøren i feltet "DateInParts". Datetoparts -operatørens operatør legger inn "dato" -parameteren som er utstyrt med "$ dob" -feltet. $ DOB -feltet har datoobjektet som er atskilt i dato -delene av $ DateToparts -operatøren.

db.Fødselsdato.aggregat (
[
$ match: _id: 5,

$ prosjekt:

_id: 0,
DateInParts: $ Datetoparts: Dato: "$ dob"


]
)

Operatøren på $ Datetoparts returnerer følgende datadeler fra $ DOB -feltet i det matchede dokumentet:

[

DateInparts:
År: 2023,
Måned: 1,
Dag: 6,
time: 22,
minutt: 35,
Andre: 12,
Millisekund: 130


]

Eksempel 6: Bruke $ Datetoparts -operatøren for ISO Week Date Format i MongoDB

Vi kan bruke ISO8601 -alternativet med den sanne verdien for å oppdatere det returnerte dokumentet for å bruke ISO -ukedatofeltene. Datoen beregnes ved hjelp av ISO 8601 -spesifikasjonen. Tenk på at vi endrer dokumentet som har "_id" lik verdien av "5". I det dokumentet bruker vi $ DateToparts -operatøren der "dato" -parameteren er satt med "$ dob" -feltet. Parameteren "ISO8601" er også gitt med verdien som er satt til "True".

db.Fødselsdato.aggregat (
[
$ match: _id: 5,

$ prosjekt:
_id: 0,
datepartsiso:
$ DATETOPARTS:
Dato: "$ dob",
ISO8601: True




]
).ganske()

Dato -delene av dette dokumentet er hentet fra $ DateToparts -operatøren som inneholder ISO -ukesfeltet og datoverdiene.

[

datepartsiso:
Isoweekyear: 2023,
Isoweek: 1,
ISODAYOFWEEK: 5,
time: 22,
minutt: 35,
Andre: 12,
Millisekund: 130


]

Konklusjon

Denne artikkelen forklarte MongoDB Aggregation Pipeline Method -vilkårene, $ DateFromParts og $ Datetoparts. $ Datefromparts og $ datetoparts -operatørene jobber motsatt til hverandre. Operatøren $ DateFromParts gir ISO -formatet fra datoen. På den annen side tar $ Datetoparts ISO -formatdatoen for å returnere datoen for verdien med verdien. Vi utforsket disse operatørene med enkle og komplekse tilfeller av eksempler for å tydeliggjøre konseptet med å bruke $ DateFromParts og $ Datetoparts -operatører i MongoDB.