MONGODB $ DATFORPARTS i $ DATETOPARTS Operatorzy

MONGODB $ DATFORPARTS i $ DATETOPARTS Operatorzy
MongoDB $ DATFORPARTS i $ DATETOPARTS Operatorzy są częścią metody agregacji. Te operatorzy są wykorzystywane do realizacji operacji daty w MongoDB. Operator $ DATFORPARTS tworzy i zwraca dokument ze strukturą daty ze składowych części daty w MongoDB. To wymaga indywidualnego pola dla każdego składnika daty. Podczas gdy operator $ DATETOPARTS podaje dokument z poszczególnymi funkcjami dla każdej części określonej wartości daty BSON. Części daty zwracane z operatora $ DATETOPARTS są przekazywane jako parametry wewnątrz $ DATFORPARTS Operator.

Jak działają $ dateFomparts i $ Datetoparts w MongoDB

Wykazano tutaj użycie $ dateFomparts i operatorów $ DATETOPARTS. Wymagamy kolekcji MongoDB, która jest wykorzystywana do pracy z tymi operatorami. Podajemy kolekcję „porodu”, w której wkładane są następujące dokumenty za pomocą polecenia wstawiania MongoDB.

db.ChildbirthDate.wstrząs

„_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”: Izodate (”2023-01-06T22: 35: 12.130Z ”)
,

„_id”: 6,
„Dziecięce nazwa”: „Kim”,
„Dob”: Izodate (”2022-11-05T23: 10: 16.125Z ”)

])

Dokumenty są wstawiane w dostarczonej kolekcji, jak pokazano w poprzednim wyjściu. Możemy użyć tych dokumentów do zapytania o $ DATFORPARTS i $ DATETOPARTS Operators. Zauważ, że używamy operatora $ DATFORPARTS w pierwszych czterech dokumentach, ponieważ daty w tych dokumentach są dzielone. Poza tym operator $ DATETOPARTS używa dwóch ostatnich dokumentów, ponieważ zawierają one obiekty pojedynczej daty.


Uznany: prawda,
InsertedIds: '0': 1, „1”: 2, „2”: 3, „3”: 4, „4”: 5, „5”: 6

Przykład 1: Korzystanie z operatora $ DATFORPARTS w MongoDB

Operator $ DATFORPARTS jest używany tutaj w pierwszym dokumencie danego zbioru, aby uzyskać obiekt jednokierunkowy. Wyrażenie „_id: 1” jest określone na etapie $ mecz. Następnie mamy etap projektu $, w którym wkładane jest pole „Dateresult” w celu wdrożenia operatora $ DATFORPARTS. Operator $ DATFORPARTS wprowadza parametry składowe daty wraz z określonymi pola dopasowanego dokumentu, aby podać obiekt daty.

db.ChildbirthDate.agregat([
$ match: _id: 1,

$ projekt:
Dateresult:
$ datefomparts:
„Rok”: „$ Birth_year”, „Miesiąc”: „$ Birth_month”, „Day”: „$ Birth_day”, „Hour”: „$ Birth_hour”




])

Pojedyncza data jest pobierana ze wszystkich części dat w wyjściu przez $ DATFORPARTS Operator.

[_ID: 1, Dateresult: Isodate („2021-09-21T15: 00: 00.000Z ")]

Przykład 2: Korzystanie z operatora $ DATFORPARTS z określoną strefą czasową w MongoDB

Możemy również użyć parametru strefy czasowej w ramach operatora $ DATFORPARTS, aby uzyskać obiekt daty danej strefy czasowej. Najpierw używamy operatora $ Match, aby dopasować wcześniej zdefiniowany dokument, który jest „_id: 2”. Następnie wywołujemy operator $ DATFORPARTS w polu „Data” etapu $ Project. Używamy wszystkich parametrów daty potrzebnych do uzyskania obiektu daty oprócz parametru „strefy czasowej”. „Strefa czasowa” otrzymuje stref czasowy „Europy/Londyn”, aby uzyskać wynikową datę w tej określonej strefie.

db.ChildbirthDate.agregat([
$ match: _id: 2,

$ projekt:
data:
$ datefomparts:
„Rok”: „$ Birth_year”, „Miesiąc”: „$ Birth_month”,
„Dzień”: „$ Birth_day”, „Hour”: „$ Birth_hour”,
„Minute”: „$ Birth_minute”, „Second”: „$ Birth_Second”, „TimeZone”: „Europe/London”



])

Operator $ DATFORPARTS zwraca następującą datę obiektu danej strefy czasowej:

[_id: 2, data: izodat („2021-09-21T15: 00: 31.000Z ")]

Przykład 3: Korzystanie z operatora $ DATFORPARTS z większym zakresem dat w MongoDB

Tutaj otrzymujemy obiekt daty z drugiego dokumentu, którego części daty są większe niż zakres. W ramach operatora $ DATFORPARTS używamy parametrów składowych do generowania pojedynczego obiektu daty z zakresu, który jest większy niż określone wartości daty. Ustawiamy pola z dokumentów zgodnie z określonymi parametrami składowymi. Operator $ DATFORPARTS zwiększa rok „2023” do „2024”, a następnie ustawia wartość miesiąca na „12”, aby podać obiekt pojedynczej daty z niepoprawnych wartości daty.

db.ChildbirthDate.agregat([
$ match: _id: 3,

$ projekt:
DATFORPARTS:
$ datefomparts:
„Rok”: „$ Birth_year”,
„Miesiąc”: „$ Birth_month”,
„Dzień”: „$ narodziny”,
„Hour”: „$ Birth_hour”,
„Minute”: „$ Birth_minute”,
„Second”: „$ urodziny”




])

Jak widać na wyjściu, składniki daty w zwróconym obiekcie daty różnią się od odpowiednich wartości daty w dokumencie. Powodem jest to, że data została ponownie obliczona przez $ dateFomparts, aby wziąć pod uwagę parametry daty, które są poza oczekiwanym zakresem.

[_ID: 3, DateFomparts: Isodate („2024-07-01T02: 21: 37.000Z ")]

Przykład 4: Korzystanie z operatora $ DATFORPARTS o zakresie mniejszym niż określone daty w MongoDB

Teraz mamy inny przypadek operatora $ dateFomparts, w którym wartości daty są mniejsze niż prawidłowy zakres dat. Dopasowujemy dokument, który zawiera pola daty i godziny poza ich odpowiednimi akceptowalnymi zakresami. Dokument, którego „_id” jest „3”, jest przekazywany w wyrażeniu $ Match Stage. Następnie tworzymy pole „DateFomparts” na etapie $ Project. Pole „DateFomparts” jest stosowane w $ DATFROPARTS Operator. Operator $ DATFORPARTS jest przekazywany z powiązanymi parametrami, aby uzyskać obiekt daty. Ponieważ mamy wszystkie wartości parametrów daty w dopasowanym dokumencie, które wynoszą zero, co jest mniejsze niż minimalne wartości zakresów daty, operator $ DATFORPARTS resetuje wszystkie parametry daty, aby wygenerować obiekt pojedynczych daty.

db.ChildbirthDate.agregat([
$ match: _id: 4,

$ projekt:
DATFORPARTS:
$ datefomparts:
„Rok”: „$ Birth_year”,
„Miesiąc”: „$ Birth_month”,
„Dzień”: „$ narodziny”,
„Hour”: „$ Birth_hour”,
„Minute”: „$ Birth_minute”,
„Second”: „$ urodziny”




])

Powstała pojedyncza data ISO jest utworzona następująco przez $ DATFORPARTS Operator, który upuszcza rok „2022” o jeden i ogranicza miesiąc do 12.

[_id: 4, DateFomparts: Isodate („2021-11-30T00: 00: 00.000Z ")]

Przykład 5: Korzystanie z operatora $ DATETOPARTS w MongoDB

Teraz używamy innego operatora $ DATETOPARTS, z którego uzyskiwane są części daty. Tutaj mamy prostą demonstrację, w której pasujemy do „_id”, którego wartość to „5” na początkowym etapie. Po dopasowaniu dokumentu etap $ Project otrzymuje wyniki operatora $ DATETOPARTS w polu „DateInparts”. Operator $ DATETOPARTS wprowadza parametr „data”, który jest dostarczany w polu „$ DOB”. Pole $ DOB ma obiekt daty, który jest podzielony na części daty przez operator $ DATETOPARTS.

db.ChildbirthDate.agregat(
[[[
$ match: _id: 5,

$ Project:

_id: 0,
DATINPARTS: $ DATETOPARTS: data: „$ dob”


]
)

Operator $ DATETOPARTS zwraca następujące części daty z pola $ DOB dopasowanego dokumentu:

[[[

DATINPARTS:
Rok: 2023,
Miesiąc: 1,
Dzień: 6,
Godzina: 22,
Minuta: 35,
Drugi: 12,
milisekunda: 130


]

Przykład 6: Korzystanie z operatora $ DATETOPARTS dla formatu daty tygodnia ISO w MongoDB

Możemy użyć opcji ISO8601 z prawdziwą wartością do aktualizacji zwróconego dokumentu, aby użyć pól daty ISO Tygodnia. Data jest obliczana za pomocą specyfikacji ISO 8601. Rozważmy, że modyfikujemy dokument, który ma „_id” równy wartości „5”. W tym dokumencie stosujemy operator $ DATETOPARTS, w którym parametr „data” jest ustawiony w polu „$ DOB”. Parametr „ISO8601” jest również podany z wartością ustawioną na „true”.

db.ChildbirthDate.agregat(
[[[
$ match: _id: 5,

$ projekt:
_id: 0,
DATEPARTSISO:
$ DATETOPARTS:
Data: „$ DOB”,
ISO8601: True




]
).ładny()

Data części tego dokumentu są uzyskiwane z operatora $ DATETOPARTS, który zawiera wartości pola i daty ISO tydzień.

[[[

DATEPARTSISO:
Isoweekyear: 2023,
Isoweek: 1,
Isodayofweek: 5,
Godzina: 22,
Minuta: 35,
Drugi: 12,
milisekunda: 130


]

Wniosek

W tym artykule wyjaśniono terminy metody rurociągu MongoDB, $ dateFomparts i $ DATETOPARTS. $ DATFORPARTS i $ DATETOPARTS Operatorzy działają przeciwnie do siebie. Operator $ DATFORPARTS podaje datę formatu ISO z części daty. Z drugiej strony, $ DATETOPARTS bierze datę formatu ISO, aby zwrócić części daty z wartością. Zbadaliśmy tych operatorów z prostymi i złożonymi przypadkami przykładów, aby wyjaśnić pojęcie korzystania z $ datefomparts i operatorów $ dateToparts w MongoDB.