Jak korzystać z operatorów MongoDB $ dateadd i $ datesubtract
Tutaj używamy operatorów $ dateADD i $ datesubTract w MongoDB, które zwracają oczekiwane daty zgodnie z danym operatorem. Rozważ kolekcję „OnLinedElivery”, w której wstawiamy kilka dokumentów za pomocą metody InsertMany (). Dokumenty te są używane w stosunku do operatorów $ datEADD i $ datesubTract, aby zademonstrować ich wydajność w MongoDB.
db.onlinedElivery.wstrząs
[[[
Id: 05,
OrderDate: Izodat („2021-12-30”),
Płatności: Izodat („2022-02-19T15: 20: 00”),
Lokalizacja: „America/New_York”,
Id: 09,
OrderDate: Izodat („2022-01-18”),
PaymentDate: Isodate („2023-01-04T16: 10: 00”),
Lokalizacja: „America/New_York”,
Id: 45,
OrderDate: Izodat („2020-03-24”),
Płatności: Izodat („2021-05-31T21: 00: 00”),
Lokalizacja: „America/New_York”,
Id: 55,
OrderDate: Izodat („2023-09-20”),
PaymentDate: Isodate („2023-12-31T21: 00: 00”),
Lokalizacja: „America/New_York”
]
)
Po wprowadzeniu poprzednich dokumentów do kolekcji „onlinedElivery”, dane wyjściowe jest reprezentowane tak, jak następujące, które potwierdzają, że dodawane są dokumenty:
Uznany: prawda,
InsertedIds:
„0”: ObjectID (”63C298E9AD100B03EAD18BEE”),
„1”: ObjectID („63C298E9AD100B03EAD18BEF”),
„2”: ObjectID (”63C298E9AD100B03EAD18BF0”),
„3”: ObjectID („63C29CEFAD100B03EAD18BF4”)
Przykład 1: Korzystanie z operatora $ DatEADD w MongoDB
Operator $ DatEADD służy do konfigurowania przyszłej daty określonej oryginalnej daty. Tutaj operator $ DatEADD jest stosowany w polu $ Project Operator, „dostawa”. Chcemy oczekiwanej daty dostawy daty zamówienia. Tak więc, w ramach operatora $ DatEADD, ustawiamy wymagany parametr „StartDate” z polem „OrderDate”. Parametr „startDate” powinien być datą początkową w formacie UTC. Następnie mamy parametr „jednostkowy”, który jest określony o wartości „dnia”. Parametr „jednostki” wskazuje przyrost czasu, który jest dołączony do „startDate”. Następnie podajemy parametr „kwoty” z liczbą „4”, który dodaje cztery dni do „StartDate”.
db.onlinedElivery.agregat(
[[[
$ Project:
Data dostarczenia:
$ dateadd:
StartDate: „$ rzędu”,
Jednostka: „dzień”,
Kwota: 4
])
Datki zamówień są zwiększane o jednostkę „4”, która jest wyświetlana w polu „dostawa”. Te daty to oczekiwane godziny dostarczenia zamówienia.
[[[
_id: ObjectID („63C298E9AD100B03EAD18BEE”),
Dostawa: izodat („2022-01-03T00: 00: 00.000Z ”)
,
_id: ObjectID („63C298E9AD100B03EAD18BEF”),
Dostawa: Izodat („2022-01-22T00: 00: 00.000Z ”)
,
_id: ObjectID („63C298E9AD100B03EAD18BF0”),
Dostawa: Izodat („2020-03-28T00: 00: 00.000Z ”)
,
_id: ObjectID („63C29CEFAD100B03EAD18BF4”),
Dostawa: Izodat („2023-09-24T00: 00: 00.000Z ”)
]
Przykład 2: Korzystanie z operatora $ datEADD w MongoDB do filtrowania zakresu daty
Używamy $ datEADD w operatorze $ Match, aby zbudować filtr, który pasuje do dokumentów w zakresie dat określonych przez startDate i ramkę czasową określoną przez operator $ DatEADD. Rozważ skrypt MongoDB. Mamy etap $ mecz w metodzie agregat. Etap $ mecz jest zdefiniowany z operatorem $ EXP, w którym określono wyrażenie warunkowe $ gt. Operator $ GT pasuje do dokumentu, który spełnia dany warunek. Ustawiliśmy pole $ PaymentDate w operatorze $ GT, które jest porównywane z datą uzyskaną od operatora $ DatEADD.
Ustawiliśmy „StartDate” z parametrami „OrderDate” do operatora $ DatEADD. „Jednostka” jest podana jako „miesiąc”, a „kwota”, którą należy dodać w datach, jest podana jako „13”. Tutaj dokumenty, których daty dostaw są większe niż „13” miesięcy od „Datacji”, są przekazywane do $ Project Operator. Następnie operator $ Project jest wdrażany z polem „Zamów”, które ma wyrażenie operatora $ DATETOSTRING, aby przekształcić daty w bardziej czytelny format.
db.onlinedElivery.agregat(
[[[
$ mecz:
$ expr:
$ gt:
[„$ Płatności”,
$ dateadd:
StartDate: „$ rzędu”,
Jednostka: „Miesiąc”,
Kwota: 13
]
,
$ Project:
_id: 0,
OrderDate: 1,
Zamówienie:
$ DATETOSTRING:
Format: „%y-%m-%D”,
Data: „$ OrderDate”
])
Po wykonaniu poprzedniego zapytania mamy dwa rekordy od $ DatEADD Operator, który spełnia warunek.
[[[
OrderDate: Izodat („2020-03-24T00: 00: 00.000Z ”),
Zamów: „2020-03-24”
,
OrderDate: Izodat („2020-03-24T00: 00: 00.000Z ”),
Zamów: „2020-03-24”
]
Przykład 3: Korzystanie z operatora $ DatEADD w MongoDB o godzinę
Operator $ DateAdd wykorzystuje czas do wykonywania obliczeń, gdy strefa czasowa jest zdefiniowana. Tutaj używamy operatora $ DatEADD, aby zwiększyć datę o godzinę. W tym celu musimy zmodyfikować parametr „jednostki” operatora $ DatEADD. Daliśmy nowe pole „godzin” w $ Project Operator. Pole „Godziny” jest dalej definiowane przez operator „$ DATETOSTRING” do konwersji daty w formacie ciągłym, który jest zwracany przez operatora $ DatEADD. Operator $ DatEADD jest określony w „StartoDate”, w którym podano pole $ OrderDate. Następnie używamy parametru „jednostki”, aby ustawić tam „godzinę”. Następnie ustawiamy parametr „Kwota” na „24” i ustawiamy „stref czasu” z polem „$ LOCATION”, gdy operator $ DatEADD zwiększa datę o godzinę.
db.onlinedElivery.agregat(
[[[
$ Project:
godziny:
$ DATETOSTRING:
Format: „%y-%m-%d%h:%m”,
data:
$ dateadd:
StartDate: „$ rzędu”,
Jednostka: „godzina”,
Kwota: 24,
strefa czasowa: „Lokalizacja $”
]
).ładny()
Osiągnęliśmy te same daty co oryginalne daty, ponieważ operator $ DatEADD dodał daty według godzin w numerze „24”.
_id: ObjectID („63C298E9AD100B03EAD18BEE”),
Godziny: „2021-12-31 00:00”
,
_id: ObjectID („63C298E9AD100B03EAD18BEF”),
Godziny: „2022-01-19 00:00”
,
_id: ObjectID („63C298E9AD100B03EAD18BF0”),
Godziny: „2020-03-25 00:00”
]
Przykład 4: Korzystanie z operatora $ datesubtract w MongoDB w celu zmniejszenia daty
W poprzednich przypadkach MongoDB wykorzystaliśmy operatora $ DatEADD, aby uzyskać oczekiwaną datę w przyszłości. Teraz używamy operatora $ datesubtract w MongoDB, który otrzymuje poprzednią datę z bieżącej daty. Operator $ datesubtract wprowadza wszystkie parametry takie same jak parametry w operatorze $ dateadd. Należy pamiętać, że używamy $ datesubtract w polu „Oczekiwana wersja” operatora projektu $. Tam operator $ datesubTract wprowadza parametr „startDate” z polem „$ payementDate” dla odejmowania daty uzyskania oczekiwanej daty zamówienia.
Następnie ustawiamy argument „jednostkowy” z „miesiącem”, aby reprezentował czas, który jest odejmowany od startowania. Dalej jest parametr „kwoty”, który jest zdefiniowany z liczbą „2” w celu zmniejszenia daty z tą wartością.
db.onlinedElivery.agregat(
[[[
$ Project:
Oczekiwane OPERSEDATE:
$ datesubtract:
StartDate: „$ płatności”,
Jednostka: „Miesiąc”,
Kwota: 2
])
Oczekiwane daty są zwracane przez $ datesubTract, które są datami dwa miesiące przed faktycznymi datami.
[[[
_id: ObjectID („63C298E9AD100B03EAD18BEE”),
Oczekiwane wyporność: izodat („2021-12-19T15: 20: 00.000Z ”)
,
_id: ObjectID („63C298E9AD100B03EAD18BEF”),
Oczekiwane wyporność: izodat („2022-11-04T16: 10: 00.000Z ”)
,
_id: ObjectID („63C298E9AD100B03EAD18BF0”),
Oczekiwane wyporność: Izodat („2021-03-31T21: 00: 00.000Z ”)
]
Przykład 5: Korzystanie z operatora $ datesubtract w MongoDB do sortowania na podstawie względnych dat
Dodatkowo możemy ustalić filtr zasięgu w zależności od czasu wykonywania zapytania za pomocą wyrażenia $ datesubtract. Zastosujemy etap $ mecz w metodzie łącznej, aby dopasować się do względnych dat. Etap $ mecz ma wyrażenie ustawione na operator $ expr. Operator $ Expr wykorzystuje operatorów $ GT i $ datesubTract, aby ograniczyć dopasowane dokumenty z datą płatności w ostatnim tygodniu. Operator $ datesubtract podaje bieżącą datę formatu ISO, ponieważ zmienna $$ jest określona dla operatora StartDate. Następnie data spadku, która jest uzyskana z operatora $ datesubTract, jest przekształcona w format ciąg.
db.onlinedElivery.agregat(
[[[
$ mecz:
$ expr:
$ gt:
[[[
„$ Płatności”,
$ datesubtract:
StartoDate: „$$ teraz”,
Jednostka: „Tydzień”,
Kwota: 1
]
,
$ Project:
_id: 0,
ID: 1,
Zapłata:
$ DATETOSTRING:
Format: „%y-%m-%D”,
Data: „$ płatności”
]
)
Mamy tylko jeden rekord, który jest pobierany przez $ datesubtract operator.
[ID: 55, płatność: „2023-12-31 ']
Wniosek
Operatorzy MongoDB $ dateAdd i $ datesubTract są wykazane w tym przewodniku. Użyliśmy tych operatorów z przykładami, w których badany jest parametr powiązany z każdym operatorem. Najpierw mamy przykładowy skrypt operatora $ datEADD, aby dodać daty z daną ilością liczby z strefą czasową. Operator $ DATEADD jest dalej wdrażany, aby uzyskać datę przyszłej w zakresie i uzyskać datę oczekiwaną, określając godzinę jako jednostkę. Następnie badany jest operator $ datesubtract z przykładem, aby uzyskać przeszłe daty.