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.