Wie der $ DateFromString -Operator in MongoDB funktioniert
Die Verwendung des $ dateFromString -Operators in MongoDB besteht darin, die Zeichenfolgeform eines Datums in das Datumsobjekt umzuwandeln. Hier konvertieren wir das Zeichenfolgedatum der Dokumente, die in der MongoDB -Sammlung angegeben sind. Wir generieren die Kollektion „Datesheet“ in der MongoDB -Shell, in der wir der folgenden Abfrage befolgen, um einige Dokumente darin einzufügen. Diese Dokumente werden mit dem Feld eingefügt, das das String -Datum enthält.
db.DATESSHEET.InsertMany ([
"_id": 1,
"Datum": "2023-04-30",
"Timezone": "Amerika/New_york"
,
"_id": 2,
"Datum": "1-5-2021",
Timezone: "UTC"
,
"_id": 3,
"Datum": "10/02/2021",
"Timezone": "Amerika/New_york"
,
"_id": 4,
"Date": Null,
"Timezone": "UTC"
,
"_id": 5,
"Datum": "20211-03-05T04: 35: 01.066 ",
"Timezone": "GMT"
]))
Die Abfrage zum Einfügen der Dokumente zeigt nun, dass die Dokumente erfolgreich in der Sammlung „Datesheet“ gespeichert werden. Wir können es über den $ dateFromString -Operator verwenden, wobei das Feld mit dem String -Datum in das Datumsobjekt von MongoDB umgewandelt wird.
Anerkannt: wahr,
InsertDIDs: '0': 1, '1': 2, '2': 3, '3': 4, '4': 5
Beispiel 1: Verwenden Sie den MongoDB $ DateFromString -Operator, um das Datumsobjekt zu erhalten
Der $ Datum von der FROMSTRING wird für die Umwandlung des angegebenen Datums in das Datumsobjekt bereitgestellt. Wir haben ein Dokument gegeben, in das wir diese Transformation wollen. Das Dokument wird als "_id: 1" -Spression in die $ Match -Stufe angegeben. Erstens ist das Dokument mit dem Wert "_id", der als "1" gespeichert ist. Dann wird der $ Project -Betreiber durchgeführt. Der $ -Projektbetreiber wird mit dem Attribut "DateObject" festgelegt, bei dem der $ Datum von Operator für den Date -Transformationsvorgang aufgerufen wird.
Der $ DateFromString -Operator wird mit dem Argument „DETESTRING“ übergeben, bei dem das Feld „$ Datum“ definiert wird, das in ein Datumsobjekt umgewandelt werden muss. Danach übergeben wir das Argument "TimeZone" an den $ DateFromString -Operator mit einer Zeitzone von "America/New_york".
db.DATESSHEET.aggregiert ([
$ Match: _id: 1,
$ project:
DateObject:
$ dateFromString:
DETESTRING: '$ DATE',
TimeZone: 'Amerika/new_york' '
])
Der oben erwähnte $ dateFromString -Operator gibt die folgenden Ergebnisse zurück, bei denen jedes Datumsfeld in American DateTime geändert wird:
[_id: 1, DateObject: Isodat ("2023-04-30T04: 00: 00.000Z ")]
Beispiel 2: Verwenden des MongoDB $ Datumfromstring -Operators mit dem OnError -Parameter
Der $ dateFromString -Operator wirft einen Fehler aus, wenn Ihre Sammlung Dokumente mit Datumszeichenfolgen enthält, die nicht analysiert werden können, es sei denn. Das ungültige Datum wird in seinem ursprünglichen String -Wert über den OnError -Parameter zurückgegeben. Wir haben ein Dokument mit dem Wert "_id" von "5", dessen $ -Date -Feld die ungültigen Datumswerte enthält. Wir entsprechen dem Dokument zuerst mit der $ Match -Stufe. Danach nutzen wir den $ Project -Betreiber, um den Betrieb des $ dateFromString -Operators aufzurufen. Der $ Datum von Operator wird mit dem Eingabeparameter „DETESTRING“ definiert, in dem das Feld $ Datum zugewiesen ist.
Als nächstes definieren wir den Zeitzone -Parameter mit der östlichen Zeit. Anschließend wird der Parameter „OnError“ mit der Fehlermeldung festgelegt, die generiert wird, wenn das $ dateFromString auf den Fehler auftritt.
db.DATESSHEET.aggregiert ([
$ Match: _id: 5,
$ project:
DateObject:
$ dateFromString:
DETESTRING: '$ DATE',
TimeZone: 'Amerika/new_york' ',
OnError: "Eine Ausnahme trat beim Parsen des String -Datums auf."
])
Seit dem „20211-03-05T04: 35: 01.066 ”String -Datum ist nicht gültig, der MongoDB -Server generiert den Fehlermeldungssatz im OnError -Parameter.
[
_id: 5,
DateObject: 'Eine Ausnahme trat beim Parsen des Zeichenfolgendatums auf'
]
Beispiel 3: Verwenden des MongoDB $ DateFromString mit dem Onnull -Parameter
Wenn Null gegen das Datumsfeld platziert wird, können wir das Datum von $ ausstring verlangen, um ein Datum anzugeben, das der Unix -Epoche entspricht, anstatt Null aus dem Onnull -Argument. Jeder gültige Ausdruck kann als Wert für das Onnull -Argument verwendet werden. Hier haben wir ein Dokument mit dem Datumsfeld als "Null". Die $ Match -Stufe entspricht dem Dokument, das bis zum $ Date FromString -Operator analysiert werden soll. Wir weisen das Feld „$ Datum“ im Argument „DETESTRING“ und auch den Parameter TimeZone mit dem Feld $ TimeZone dem Feld $ DateFromString -Operator zu. Danach haben wir den Onnull -Parameter, der ein neues Datum (0) zuweist, um das Epochendatum -Objekt zurückzugeben.
db.DATESSHEET.aggregiert ([
$ Match: _id: 4,
$ project:
Datum:
$ dateFromString:
DETESTRING: '$ DATE',
TimeZone: '$ timezone',
Onnull: neues Datum (0)
])
Da das Datum nicht im Dokument festgelegt ist und den Nullwert enthält.
[_id: 4, Datum: Isodat ("1970-01-01T00: 00: 00.000Z ")]
Beispiel 4: Verwenden des MongoDB $ Datumsfromstring -Operators mit dem Formatparameter
Wir können das Format mit dem optionalen Formatargument des $ dateFromString -Operators für die bereitgestellte Datums-/Uhrzeitzeichenfolge anpassen. Das Standardformat des Datumsobjekts lautet „%y-%M-%dt%H:%m:%s.%Lz “, das in den vorherigen Beispielen vom $ Datum vom Operator zurückgegeben wird. Wir transformieren das Dokument, das in die $ Match -Stufe angegeben ist. Das Dokument hat den Zeichenfolgendatumwert von "10/02/2021", wobei der 10. Wert das Datum oder einen Monat sein kann. Ebenso kann der Wert „02“ im angegebenen Datum das Datum oder ein Monat sein.
Dafür setzen wir den Parameter „Format“ im $ datefromstring -Operator. Um genau anzugeben, welches eine, wird die Option „Format“ im Format „%m/%d/%y“ verwendet. Der $ Datum von Operator analysiert das angegebene Datum des Dokuments in das Datumsobjekt in der angegebenen Formatspezifikation.
db.DATESSHEET.Aggregat([
$ Match: _id: 3,
$ project:
Datum:
$ dateFromString:
DETESTRING: '$ DATE',
Format: "%M/%d/%y"
]))
Das String -Datum wird in das Datum Objekt des angegebenen Formats analysiert.
[_id: 3, Datum: isodat ("2021-10-02t00: 00: 00.000Z ")]
Beispiel 5: Verwenden des MongoDB $ DateFromString -Operator
Wir können auch die Daten im ISO 8601 -Format mit einigen verschiedenen Format -Spezifikatoren ausdrücken. Wir verwenden das Dokument von "_id" gleich "2", um das Parsen -Date -Objekt im ISO -Woche -Format zu erhalten. Wir setzen die Spezifikation des Formatparameters als „%U-%V-%G“ innerhalb des $ Datumfromstring-Operators. Das „U“ bezeichnet das Jahr, „V“ zeigt die Tage in der Woche an, und „G“ repräsentiert das Jahr der Woche im ISO 8601 -Format.
db.DATESSHEET.Aggregat([
$ Match: _id: 2,
$ project:
Datum:
$ dateFromString:
DETESTRING: '$ DATE',
Format: "%U-%V-%G"
]))
Das Stringdatum „1-5-2021“ des übereinstimmenden Dokuments wird in das ISO-Woche-Formatdatum analysiert, wie in den folgenden Punkten gezeigt:
[_id: 2, Datum: Isodat ("2021-02-01T00: 00: 00.000Z ")]
Abschluss
Dieser Artikel enthält alle informativen Kenntnisse über den $ Datum von Operator von MongoDB. Wir haben den $ dateFromString -Operator verwendet, um das String -Formatdatum in das Datumsobjekt zu analysieren. Der $ DateFromoperator wird hier zusammen mit seinem optionalen Parameter verwendet, um die Arbeit dieser Parameter zu untersuchen, um den Wert des String -Datums zu transformieren. Darüber hinaus haben wir das $ dateFromString verwendet, um die Zeichenfolge in die angegebenen Formatspezifikationen zu verwandeln.