MongoDB $ DateFromparts und $ DateToparts -Betreiber

MongoDB $ DateFromparts und $ DateToparts -Betreiber
Die MongoDB $ DateFromparts und $ DateToparts -Betreiber sind Teil der Aggregationsmethode. Diese Betreiber werden verwendet, um den Datumsbetrieb in MongoDB zu erreichen. Der $ DateFromparts -Betreiber erstellt und gibt ein Dokument mit der Datumsstruktur aus den Bestandteilen des Datums in MongoDB zurück und kehrt zurück. Für jeden Datum ist ein individuelles Feld erforderlich. Während der $ DateToparts -Operator ein Dokument mit individuellen Funktionen für jeden Teil eines bestimmten BSON -Datumswerts anbietet. Die vom $ DateToParts -Bediener zurückgegebenen Datumsteile werden als Parameter im $ DateFromparts -Operator übergeben.

Wie funktionieren die $ DateFromparts und $ DateToparts in MongoDB?

Die Verwendung der $ DateFromparts und der $ DateToparts -Betreiber wird hier nachgewiesen, um die Daten entsprechend abzurufen. Wir benötigen die Sammlung von MongoDB, die verwendet wird, um mit diesen Betreibern zusammenzuarbeiten. Wir geben eine „Geburt der Geburt“, bei der die folgenden Dokumente unter Verwendung des Insertion -Befehls von MongoDB eingefügt werden.

db.Geburt.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": Isodat ("2023-01-06T22: 35: 12.130Z ")
,

"_id": 6,
"Child_Name": "Kim",
"Dob": Isodat ("2022-11-05T23: 10: 16.125Z ")

]))

Die Dokumente werden in die bereitgestellte Sammlung eingefügt, wie in der vorherigen Ausgabe gezeigt. Wir können diese Dokumente verwenden, um die $ DateFromparts und $ DateToparts -Betreiber abzufragen. Beachten Sie, dass wir in den ersten vier Dokumenten über den $ DateFromparts -Betreiber verwendet werden, da die Daten in diesen Dokumenten verteilt sind. Außerdem verwendet der $ DateToparts -Operator die letzten beiden Dokumente, da sie die einzelnen Datumsobjekte enthalten.


Anerkannt: wahr,
InsertDIDs: '0': 1, '1': 2, '2': 3, '3': 4, '4': 5, '5': 6

Beispiel 1: Verwenden des $ DateFromparts -Operators in MongoDB

Der $ DateFromparts -Betreiber wird hier über das erste Dokument der angegebenen Sammlung verwendet, um das Single -Datum -Objekt zu erhalten. Der Ausdruck "_id: 1" wird in der $ Match -Stufe angegeben. Dann haben wir die $ project -Phase, in der das Feld „Dateresult“ eingefügt wird, um den $ DateFromparts -Operator bereitzustellen. Der Operator $ DateFromparts gibt die Bestandteile des Datums zusammen mit den angegebenen Feldern des übereinstimmenden Dokuments ein, um das Datumsobjekt anzugeben.

db.Geburt.Aggregat([
$ Match: _id: 1,

$ project:
Dateresult:
$ DateFromparts:
"Jahr": "$ birth_year", "Monat": "$ birth_month", "Tag": "$ birth_day", "Stunde": "$ birth_hour"




]))

Das einzelne Datum wird von allen Teilen der Daten in der Ausgabe durch den $ DateFromparts -Operator abgerufen.

[_id: 1, dateresult: isodat ("2021-09-21t15: 00: 00: 00.000Z ")]

Beispiel 2: Verwenden des $ DateFromparts -Operators mit einer bestimmten Zeitzone in MongoDB

Wir können auch den Zeitzone -Parameter innerhalb des $ DateFromparts -Operators verwenden, um das Datumsobjekt einer bestimmten Zeitzone zu erhalten. Wir verwenden zunächst den $ Match -Operator, um dem vordefinierten Dokument zu entsprechen, das "_id: 2" lautet. Anschließend berufen wir den $ DateFromparts -Betreiber im Bereich „Datum“ der $ Project -Phase. Wir verwenden alle Datumsparameter, die erforderlich sind, um das Datumsobjekt zusätzlich zum Parameter „Timezone“ zu erhalten. Die „Zeitzone“ erhält eine Zeitzone von „Europa/London“, um das daraus resultierende Datum in dieser angegebenen Zone zu erhalten.

db.Geburt.Aggregat([
$ Match: _id: 2,

$ project:
Datum:
$ DateFromparts:
"Jahr": "$ birth_year", "Monat": "$ birth_month",
"Tag": "$ birth_day", "Stunde": "$ birth_hour",
"Minute": "$ birth_minute", "zweiten": "$ birg mussecond", "timezone": "Europa/London"



]))

Der Operator $ DateFromparts gibt das folgende Datum Objekt der angegebenen Zeitzone zurück:

[_id: 2, Datum: Isodat ("2021-09-21T15: 00: 31.000Z ")]

Beispiel 3: Verwenden des $ DateFromparts -Operators mit einem größeren Datenbereich in MongoDB

Hier erhalten wir das Datumsobjekt aus dem zweiten Dokument, dessen Datumsteile größer sind als der Bereich. Innerhalb des $ DateFromparts -Operator. Wir setzen die Felder aus den Dokumenten gemäß den festgelegten Parametern der Bestimmungen. Der $ DateFromparts -Betreiber erhöht das Jahr „2023“ auf „2024“ und legt dann den Monatswert auf „12“ fest, um das einzelne Datumsobjekt aus den ungültigen Datumswerten anzugeben.

db.Geburt.Aggregat([
$ Match: _id: 3,

$ project:
DateFromparts:
$ DateFromparts:
"Jahr": "$ birth_year",
"Monat": "$ birth_month",
"Tag": "$ birth_day",
"Stunde": "$ birth_hour",
"Minute": "$ birth_minute",
"Zweite": "$ birth_second"




]))

Wie in der Ausgabe zu sehen ist, unterscheiden sich die Datumsbestandteile des zurückgegebenen Datumsobjekts von den entsprechenden Datumswerten im Dokument. Der Grund dafür ist, dass das Datum bis $ DateFromparts neu berechnet wurde, um die Datumsparameter zu berücksichtigen, die außerhalb des erwarteten Bereichs liegen.

[_id: 3, DateFromparts: isodat ("2024-07-01T02: 21: 37.000Z ")]

Beispiel 4: Verwenden des $ DateFromparts -Operators mit einem Bereich von weniger als den angegebenen Daten in MongoDB

Jetzt haben wir einen weiteren Fall des $ DateFromparts -Operators, in dem die Datumswerte geringer sind als der gültige Datenbereich. Wir stimmen mit dem Dokument überein, das die Datums- und Uhrzeitfelder über ihre jeweiligen akzeptablen Bereiche enthält. Das Dokument, dessen "_id" "3" ist. Danach erstellen wir das Feld "DateFromparts" in der $ Project -Phase. Das Feld „DateFromparts“ ist mit dem $ DateFromparts -Betreiber beschäftigt. Der $ DateFromparts -Operator wird mit seinen zugehörigen Parametern übergeben, um das Datumsobjekt zu erhalten. Da wir alle Werte der Datumsparameter im übereinstimmenden Dokument haben, die Null sind, was geringer ist als die Mindestwerte der Datumsbereiche.

db.Geburt.Aggregat([
$ Match: _id: 4,

$ project:
DateFromparts:
$ DateFromparts:
"Jahr": "$ birth_year",
"Monat": "$ birth_month",
"Tag": "$ birth_day",
"Stunde": "$ birth_hour",
"Minute": "$ birth_minute",
"Zweite": "$ birth_second"




]))

Das resultierende Einzel -ISO -Datum wird im Folgenden durch den $ DateFromparts -Betreiber gegründet, der das Jahr „2022“ um eins senkt und den Monat auf 12 beschränkt.

[_id: 4, DateFromparts: Isodat ("2021-11-30T00: 00: 00: 00.000Z ")]

Beispiel 5: Verwenden des $ DateToparts -Operators in MongoDB

Jetzt verwenden wir einen weiteren $ DateToparts -Operator, aus dem die Datumsanteile erhalten werden. Hier haben wir eine einfache Demonstration, bei der wir mit dem „_id“ übereinstimmen, dessen Wert in der Anfangsphase „5“ ist. Nach dem Abschluss des Dokument. Der $ DateToparts -Operator gibt den Parameter „Datum“ ein, der mit dem Feld "$ dob" geliefert wird. Das Feld $ DOB verfügt.

db.Geburt.Aggregat(
[
$ Match: _id: 5,

$ project:

_id: 0,
DateInParts: $ DateToparts: Datum: "$ dob"


]
)

Der $ DateToparts -Betreiber gibt die folgenden Datumsteile aus dem Feld $ Dob des übereinstimmenden Dokuments zurück:

[

DateInParts:
Jahr: 2023,
Monat: 1,
Tag: 6,
Stunde: 22,
Minute: 35,
Zweitens: 12,
Millisekunden: 130


]

Beispiel 6: Verwenden des $ DateToparts -Operators für das ISO -Wochendatumformat in MongoDB

Wir können die Option ISO8601 mit dem wahren Wert verwenden, um das zurückgegebene Dokument zu aktualisieren, um die Felder Datum der ISO -Woche zu verwenden. Das Datum wird unter Verwendung der ISO 8601 -Spezifikation berechnet. Bedenken Sie, dass wir das Dokument ändern, das das "_id" entspricht dem Wert von "5". In diesem Dokument wenden wir den $ DateToparts -Operator an, bei dem der Parameter „Datum“ mit dem Feld „$ dob“ festgelegt wird. Der Parameter „ISO8601“ wird auch mit dem Wert angegeben, der auf „True“ eingestellt ist.

db.Geburt.Aggregat(
[
$ Match: _id: 5,

$ project:
_id: 0,
DatePartSiso:
$ datetoparts:
Datum: "$ dob",
ISO8601: Richtig




]
).hübsch()

Die Datumsteile dieses Dokuments werden vom $ DateToparts -Betreiber erhalten, der die Feld- und Datumswerte der ISO -Woche enthält.

[

DatePartSiso:
ISOWEYKEEAR: 2023,
Isoweek: 1,
Isodayofweek: 5,
Stunde: 22,
Minute: 35,
Zweitens: 12,
Millisekunden: 130


]

Abschluss

Dieser Artikel erläuterte die MongoDB -Aggregationspipeline -Methodenbedingungen, $ DateFromparts und $ DateToparts. Die $ DateFromparts und $ DateToparts -Betreiber arbeiten entgegengesetzt zueinander. Der $ DateFromparts -Operator gibt das ISO -Formatdatum aus den Datumsteilen an. Auf der anderen Seite nimmt die $ DateToparts das ISO -Formatdatum an, um die Datumsteile mit dem Wert zurückzugeben. Wir haben diese Betreiber mit einfachen und komplexen Fällen von Beispielen untersucht.