MONGODB $ DATEADD i $ DATEBTRATRTRATS

MONGODB $ DATEADD i $ DATEBTRATRTRATS
MongoDB zapewnia różne operatory rurociągów agregacyjnych do różnych celów. Spośród wszystkich operatorów omówimy odpowiednio $ datEADD i $ datesubtract MongoDB. Operator $ DateAdd zwiększa obiekt daty o z góry określoną ilość jednostek czasowych. Podczas gdy operator $ datesubtract służy do zmniejszenia obiektów daty przez dostarczoną liczbę jednostek czasowych. Zwracany wynik operatorów $ datEADD i $ datesubTract jest zawsze obiektem daty, niezależnie od typu danych wejściowych.

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.