Hvordan $ datefromString -operatøren fungerer i MongoDB
Bruken av $ datefromString -operatøren i MongoDB er å konvertere strengformen til en dato til datoobjektet. Her konverterer vi strengdatoen for dokumentene som er spesifisert i MongoDB -samlingen. Vi genererer "Datesheet" -samlingen i MongoDB -skallet der vi følger følgende spørsmål for å sette inn noen dokumenter i den. Disse dokumentene settes inn med feltet som inneholder strengdatoen.
db.Datoheet.INSERTMANY ([
"_id": 1,
"Dato": "2023-04-30",
"Timezone": "America/New_York"
,
"_id": 2,
"Dato": "1-5-2021",
Timezone: "UTC"
,
"_id": 3,
"Dato": "10/02/2021",
"Timezone": "America/New_York"
,
"_id": 4,
"Dato": NULL,
"Timezone": "UTC"
,
"_id": 5,
"Dato": "20211-03-05T04: 35: 01.066 ",
"Timezone": "GMT"
])
Nå viser spørringen om å sette inn dokumentene at dokumentene er lagret i "Datesheet" -samlingen. Vi kan bruke den over $ DatoFromString -operatøren der feltet med strengdatoen blir konvertert til datoobjektet til MongoDB.
Anerkjent: sant,
Sett inn: '0': 1, '1': 2, '2': 3, '3': 4, '4': 5
Eksempel 1: Bruke MongoDB $ datefromString -operatøren for å få datoobjektet
$ DatefromString er distribuert for transformasjonen av den spesifiserte datoen til datoobjektet. Vi har gitt et dokument som vi ønsker denne transformasjonen. Dokumentet er gitt som “_id: 1” -uttrykk til $ Match Stage. Først blir dokumentet med "_id" -verdien som er lagret som "1" matchet i "Datesheet" -samlingen. Deretter utføres $ prosjektoperatøren. $ Prosjektoperatøren er satt med “DateObject” -attributtet der $ DateFromString -operatøren blir kalt for datoverandringsoperasjonen.
$ DatoFromString -operatøren sendes med "datestring" -argumentet der "$ date" -feltet er definert som må omdannes til et datoobjekt. Etter det gir vi "Timezone" -argumentet til $ DatoFromString -operatøren med en tidssone for "America/New_York".
db.Datoheet.aggregat ([
$ match: _id: 1,
$ prosjekt:
DateObject:
$ dateFromString:
datestring: '$ date',
TIMEZONE: 'Amerika/new_york'
])
Den nevnte $ DatoFromString -operatøren returnerer følgende resultater der hvert datofelt endres til amerikansk datetime:
[_id: 1, DateObject: Isodate ("2023-04-30T04: 00: 00.000z ")]
Eksempel 2: Bruke MongoDB $ datefromString -operatøren med Onerror -parameteren
$ DatoFromString -operatøren kaster en feil hvis samlingen din inneholder dokumenter med datostrenger som ikke kan analyseres med mindre vi gir en aggregeringserklæring til den ekstra Onerror -parameteren. Den ugyldige datoen returneres i sin opprinnelige strengverdi gjennom Onerror -parameteren. Vi har et dokument med "_id" -verdien til "5" hvis $ dato -feltet gir ugyldige datoverdier. Vi samsvarer først med dokumentet med $ Match -scenen. Etter det bruker vi $ prosjektoperatøren til å ringe driften av $ datefromstring -operatøren. $ DatoFromString -operatøren er definert med "Datestring" inngangsparameteren der feltet $ dato er tildelt.
Deretter definerer vi tidssonparameteren med østlig tid. Deretter settes parameteren "Onerror" med feilmeldingen som genereres når $ DateFromString møter feilen mens du transformerer strengdatoen til datoobjektet.
db.Datoheet.aggregat ([
$ match: _id: 5,
$ prosjekt:
DateObject:
$ dateFromString:
datestring: '$ date',
TIMEZONE: 'Amerika/new_york',
ONEERROR: "Et unntak oppstod mens du analyserer strengdatoen"
])
Siden “20211-03-05T04: 35: 01.066 ”strengdato er ikke gyldig, MongoDB -serveren genererer feilmeldingen som er satt i OnError -parameteren.
[
_id: 5,
DateObject: 'Et unntak oppstod mens du analyserer strengdatoen'
]
Eksempel 3: Bruke MongoDB $ datefromString med Onnull -parameteren
Når null er plassert mot datofeltet, kan vi kreve $ datefromstring for å gi en dato som tilsvarer UNIX -epoken i stedet for Null fra Onnull -argumentet. Ethvert gyldig uttrykk kan brukes som verdien for Onnull -argumentet. Her har vi et dokument som har datofeltet som "null". $ Match -scenen samsvarer med dokumentet som skal analyseres av $ DateFromString -operatøren. Vi tildeler "$ dato" -dato -feltet i "datestring" -argumentet og også tidssone -parameteren med $ Timezone -feltet til $ DateFromString -operatøren. Etter det har vi Onnull -parameteren som tildeler en ny dato (0) for å returnere epokdatoobjektet.
db.Datoheet.aggregat ([
$ match: _id: 4,
$ prosjekt:
Dato:
$ dateFromString:
datestring: '$ date',
TIMEZONE: '$ TIMEZONE',
Onnull: Ny dato (0)
])
Siden datoen ikke er angitt i dokumentet og inneholder nullverdien, har den resulterende analyserte datoen som blir returnert av forrige spørring gått siden 1. januar 1970.
[_id: 4, dato: Isodate ("1970-01-01T00: 00: 00.000z ")]
Eksempel 4: Bruke MongoDB $ DateFromString -operatøren med formatparameteren
Vi kan tilpasse formatet ved å bruke det valgfrie formatargumentet til $ DateFromString -operatøren for den oppgitte datoen/tidsstrengen. Standardformatet til datoobjektet er “%y-%m-%dt%h:%m:%s.%LZ ”som returneres av $ DateFromString -operatøren i de tidligere eksemplene. Vi transformerer dokumentet som er spesifisert til $ Match Stage. Dokumentet har strengdatoverdien for “10/02/2021” der 10. verdi kan være datoen eller en måned. På samme måte kan "02" -verdien på den spesifiserte datoen være datoen eller en måned.
For dette setter vi "Format" -parameteren i $ DatoFromString -operatøren. For nøyaktig å spesifisere hvilken, "Format" -alternativet brukes i "%m/%d/%y" -format. $ DatoFromString Operator analyserer den angitte datoen for dokumentet i datoobjektet i spesifikasjonen for gitt format.
db.Datoheet.aggregat ([
$ match: _id: 3,
$ prosjekt:
Dato:
$ dateFromString:
datestring: '$ date',
Format: "%m/%d/%y"
])
Strengdatoen er analysert inn i datoen for det angitte formatet.
[_id: 3, dato: ISODATE ("2021-10-02T00: 00: 00.000z ")]
Eksempel 5: Bruke MongoDB $ DateFromString -operatør for å få datoobjektet i ISO -ukens format
Vi kan også uttrykke datoene i ISO 8601 -format med noen få forskjellige formatspesifikasjoner. Vi bruker dokumentet om "_id" lik "2" for å få det analyserte dato -objektet i ISO -ukens format. Vi setter spesifikasjonen av formatparameteren som "%u-%v-%g" innenfor $ datofromstring-operatøren. "U" betegner året, "V" indikerer dagene i uken, og "G" representerer ukens år i ISO 8601 -format.
db.Datoheet.aggregat ([
$ match: _id: 2,
$ prosjekt:
Dato:
$ dateFromString:
datestring: '$ date',
Format: "%U-%V-%G"
])
"1-5-2021" strengdato for det matchede dokumentet er analysert til ISO-ukens formatdato som vist på følgende:
[_id: 2, dato: Isodate ("2021-02-01T00: 00: 00.000z ")]
Konklusjon
Denne artikkelen inneholder all informativ kunnskap om $ datefromstring -operatøren av MongoDB. Vi brukte $ DateFromString -operatøren for å analysere strengformatet Dato inn i datoobjektet. $ Datefromoperator brukes her sammen med den valgfrie parameteren for å utforske arbeidet med disse parametrene for å transformere verdien av strengdatoen. Videre benyttet vi $ DatoFromString for å transformere strengen til spesifikasjonene for gitt format.