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.