MongoDB $ datadd und $ datesUbract -Operatoren

MongoDB $ datadd und $ datesUbract -Operatoren
MongoDB bietet verschiedene Aggregationspipeline -Operatoren für verschiedene Zwecke. Unter allen Betreibern werden wir die $ dataDD und den $ dateSubract von MongoDB diskutieren. Der $ dataDD -Operator erhöht das Datumsobjekt um eine vorgegebene Zeiteinheiten. Während der $ datesUbract -Operator verwendet wird, um die Datumsobjekte um die bereitgestellte Zeiteinheiten zu verringern. Das zurückgegebene Ergebnis der Operatoren von $ dataDD und $ dateSubtract ist immer ein Datumsobjekt, unabhängig vom Eingabedatentyp.

So verwenden Sie den MongoDB $ DATEDD und $ DATATSUBRACTRACT -Operatoren

Hier verwenden wir die Operatoren $ dataDD und $ dateSubtract in MongoDB, die die erwarteten Daten gemäß dem angegebenen Operator zurückgeben. Betrachten Sie die Sammlung „Onlinedelivery“, in der wir einige Dokumente mit der Methode InsertMany () einfügen. Diese Dokumente werden über die Operatoren $ DATEADD und $ DATESUBRACTRACT verwendet, um ihre Leistung in MongoDB zu demonstrieren.

db.Onlinedelivery.InsertMany (
[
Id: 05,
OrderDate: Isodat ("2021-12-30"),
PaymentDate: Isodat ("2022-02-19T15: 20: 00"),
Ort: "America/new_york",
Id: 09,
OrderDate: Isodat ("2022-01-18"),
PaymentDate: Isodat ("2023-01-04T16: 10: 00"),
Ort: "America/new_york",
Id: 45,
OrderDate: Isodat ("2020-03-24"),
PaymentDate: Isodat ("2021-05-31T21: 00: 00"),
Ort: "America/new_york",
Id: 55,
OrderDate: Isodat ("2023-09-20"),
PaymentDate: Isodat ("2023-12-31T21: 00: 00"),
Ort: "America/new_york"
]
)

Nach der Einführung der vorherigen Dokumente in der Sammlung „Onlinedelivery“ wird die Ausgabe wie im Folgenden dargestellt, in der anerkannt wird, dass die Dokumente hinzugefügt werden:


Anerkannt: wahr,
InsertDIDs:
'0': ObjectID ("63C298E9AD100B03EAD18BEE"),
'1': ObjectID ("63C298E9AD100B03ED18BEF"),
'2': ObjectID ("63C298E9AD100B03EAD18BF0"),
'3': ObjectID ("63C29CEFAD100B03ED18BF4")

Beispiel 1: Verwenden des $ dataDD -Operators in MongoDB

Der $ dataDD -Operator wird verwendet, um das zukünftige Datum des angegebenen Originaldatums zu konfigurieren. Hier wird der $ DATEADD -Betreiber im Feld "DeliveryDate" $ Project Operator verwendet, "DeliveryDate". Wir möchten den erwarteten Liefertermin des Bestelldatums. Innerhalb des $ dataDD -Operators setzen wir den erforderlichen Parameter "StartDate" mit dem Feld "OrderDate". Der Parameter „StartDate“ sollte das Anfangsdatum im UTC -Format sein. Danach haben wir einen „Einheit“ -Parameter, der mit dem Wert "Tag" angegeben ist. Der Parameter „Einheit“ gibt das Zeitinkrement an, das an das "StartDate" angehängt ist. Anschließend geben wir den Parameter „Betrag“ mit der Zahl „4“ an, die dem "Startdate" vier Tage hinzufügt.

db.Onlinedelivery.Aggregat(
[

$ project:

Liefertermin:

$ DATEADD:

Startdate: "$ orderDate",
Einheit: "Tag",
Betrag: 4




]))

Die OrderDates werden durch ein "4" -Angerät erhöht, das im Feld "DeliveryDate" angezeigt wird. Diese Daten sind die erwarteten Zeiten, um die Bestellung zu liefern.

[

_id: ObjectID ("63C298E9AD100B03ED18BEE"),
Lieferung: Isodat ("2022-01-03T00: 00: 00.000Z ")
,

_id: ObjectID ("63C298E9AD100B03ED18BEF"),
Lieferung: Isodat ("2022-01-22T00: 00: 00.000Z ")
,

_id: ObjectID ("63C298E9AD100B03EAD18BF0"),
Lieferung: Isodat ("2020-03-28T00: 00: 00.000Z ")
,

_id: ObjectID ("63C29CEFAD100B03ED18BF4"),
Lieferung: Isodat ("2023-09-24T00: 00: 00.000Z ")

]

Beispiel 2: Verwenden des $ dataDD -Operators in MongoDB, um einen Datumsbereich zu filtern

Wir verwenden den $ datadd in einem $ Match -Operator, um einen Filter zu erstellen, der mit den Dokumenten innerhalb eines Datenbereichs übereinstimmt, der von einem Startdate und einem Zeitrahmen festgelegt wird, der vom $ dataDD -Operator angegeben wird. Betrachten Sie das Drehbuch von MongoDB. Wir haben eine $ Match -Phase innerhalb der Gesamtmethode. Die $ Match -Stufe wird mit dem $ EXP -Operator definiert, bei dem der bedingte Ausdruck von $ gt angegeben ist. Der $ GT -Betreiber entspricht dem Dokument, das die angegebene Bedingung erfüllt. Wir haben das Feld $ paymentDate im $ gt -Betreiber eingestellt, der mit dem Datum verglichen wird.

Wir setzen die Parameter "startdate" mit den Parametern "OrderDate" auf den $ DateAdd -Operator. Das "Einheit" wird als "Monat" angegeben und der "Betrag", der in den Daten hinzugefügt werden soll, wird als "13" angegeben. Hier werden die Dokumente, deren Lieferdaten größer als 13 Monate vom „OrderDate“ sind. Anschließend wird der $ Project -Operator mit dem Feld „Order“ bereitgestellt, das den Ausdruck des $ DateTostring -Operators enthält, um die Daten in ein besser lesbares Format zu verwandeln.

db.Onlinedelivery.Aggregat(
[

$ Match:

$ expr:

$ gt:
["$ PaymentDate",

$ DATEADD:

Startdate: "$ orderDate",
Einheit: "Monat",
Betrag: 13


]


,

$ project:

_id: 0,
Orderdate: 1,
Befehl:

$ datetostring:

Format: "%y-%M-%d",
Datum: "$ orderDate"




]))

Nach Ausführung der vorherigen Abfrage haben wir zwei Datensätze vom $ dataDD -Operator, der die Bedingung erfüllt.

[

OrderDate: Isodat ("2020-03-24T00: 00: 00.000Z "),
Bestellung: '2020-03-24'
,

OrderDate: Isodat ("2020-03-24T00: 00: 00.000Z "),
Bestellung: '2020-03-24'

]

Beispiel 3: Verwenden des $ dataDD -Operators in MongoDB um eine Stunde

Der $ dataDD -Operator nutzt die Zeit, um die Berechnungen durchzuführen, wenn eine Zeitzone definiert ist. Hier verwenden wir den $ dataDD -Operator, um das Datum um eine Stunde zu erhöhen. Zu diesem Zeitpunkt müssen wir den Parameter "Einheit" des $ dataDD -Operators ändern. Wir haben im $ Project -Betreiber ein neues „Stunden“ -Feld gegeben. Das Feld „Stunden“ wird durch den Bediener „$ DateToString“ für die Konvertierung des Datums im Zeichenfolgenformat weiter definiert, das vom $ DateAdd -Bediener zurückgegeben wird. Der $ dataDD -Operator wird mit dem "Startdate" angegeben, in dem das Feld $ orderDate bereitgestellt wird. Dann verwenden wir den Parameter "Einheit", um dort die "Stunde" festzulegen. Danach setzen wir den Parameter "Betrag" auf "24" und das Feld "TimeZone" mit dem Feld "$ location", wenn der $ dataDD -Operator das Datum um eine Stunde erhöht.

db.Onlinedelivery.Aggregat(
[

$ project:

Std:

$ datetostring:

Format: "%y-%M-%d%H:%m",
Datum:

$ DATEADD:

Startdate: "$ orderDate",
Einheit: "Stunde",
Betrag: 24,
Timezone: "$ location"






]
).hübsch()

Wir haben dieselben Daten wie die ursprünglichen Daten abgerufen, da der $ dataDD -Operator die Daten in der Anzahl der 24 "24" hinzugefügt hat.


_id: ObjectID ("63C298E9AD100B03ED18BEE"),
Stunden: '2021-12-31 00:00' '
,

_id: ObjectID ("63C298E9AD100B03ED18BEF"),
Stunden: '2022-01-19 00:00' '
,

_id: ObjectID ("63C298E9AD100B03EAD18BF0"),
Stunden: '2020-03-25 00:00' '

]

Beispiel 4: Verwenden des $ dateSubract -Operators in MongoDB, um ein Datum zu verringern

In den früheren Fällen von MongoDB haben wir den $ dataDD -Betreiber verwendet, um den erwarteten Datum in Zukunft zu erhalten. Jetzt verwenden wir den $ dateSubtract -Operator von MongoDB, der das vergangene erwartete Datum vom aktuellen angegebenen Datum erhält. Der $ dateSubtract -Operator gibt alle Parameter wie die Parameter im $ dataDD -Operator ein. Beachten Sie, dass wir den $ dateSubract im Bereich „erwartungsigerDate“ des $ Project -Operators verwenden. Dort gibt der $ dateSubract -Operator den Parameter „StartDate“ mit dem Feld „$ payementDate“ für die Subtraktion des Datums auf, um das erwartete Datum der Bestellung zu erhalten.

Dann setzen wir das Argument "Einheit" mit dem "Monat", um die Zeit darzustellen, die vom Startdate weggenommen wird. Als nächstes kommt der Parameter „Betrag“, der mit der Zahl „2“ definiert ist, um das Datum mit diesem Wert zu verringern.

db.Onlinedelivery.Aggregat(
[

$ project:

erwartetorderDate:

$ datesubract:

Startdate: "$ paymentDate",
Einheit: "Monat",
Betrag: 2




]))

Die erwarteten Daten werden vom $ dateSubtract -Operator zurückgegeben, der zwei Monate vor den tatsächlichen Daten sind.

[

_id: ObjectID ("63C298E9AD100B03ED18BEE"),
erwartetorderDate: isodat ("2021-12-19t15: 20: 00.000Z ")
,

_id: ObjectID ("63C298E9AD100B03ED18BEF"),
erwartetorderDate: isodat ("2022-11-04t16: 10: 00.000Z ")
,

_id: ObjectID ("63C298E9AD100B03EAD18BF0"),
erwartetOrderDate: Isodat ("2021-03-31T21: 00: 00.000Z ")

]

Beispiel 5: Verwenden des $ dateSubract -Operators in MongoDB, um basierend auf relativen Daten zu sortieren

Darüber hinaus können wir je nach Ausführungszeit der Abfrage einen Bereichsfilter anhand des $ dateSubract -Ausdrucks festlegen. Wir verwenden die $ Match -Phase in der Gesamtmethode, um den relativen Daten zu entsprechen. Die $ Match -Stufe hat den Ausdruck, der mit dem $ EXPR -Operator festgelegt wird. Der $ EXPR -Betreiber verwendet den $ GT- und $ dateSubtract -Betreiber, um die übereinstimmenden Dokumente mit einem PaymentDate in der letzten Woche zu begrenzen. Der $ dateSubract -Operator gibt das aktuelle ISO -Formatdatum an, da die $$ jetzt Variable für den StartDate -Bediener angegeben ist. Dann wird das Dekrementdatum, das aus dem $ dateSubtract -Operator erhalten wird.

db.Onlinedelivery.Aggregat(
[

$ Match:

$ expr:

$ gt:
[
"$ PaymentDate",

$ datesubract:

Startdate: "$$ jetzt",
Einheit: "Woche",
Betrag: 1


]


,

$ project:

_id: 0,
ID: 1,
Zahlung:

$ datetostring:

Format: "%y-%M-%d",
Datum: "$ paymentDate"




]
)

Wir haben nur einen Datensatz, der vom $ dateSubtract -Operator abgerufen wird.

[ID: 55, Zahlung: '2023-12-31']

Abschluss

Die Operatoren von MongoDB $ dataDD und $ dateSubract werden in diesem Handbuch nachgewiesen. Wir haben diese Operatoren mit Beispielen verwendet, bei denen der Parameter, der jedem Bediener zugeordnet ist. Erstens haben wir ein Beispielskript des $ dataDD -Operator. Der $ dataDD -Betreiber wird weiter bereitgestellt, um das zukünftige Datum innerhalb eines Bereichs zu erhalten und das erwartete Datum zu erhalten, indem die Stunde als Einheit angegeben wird. Danach wird der $ dateSubtract -Operator mit dem Beispiel untersucht, um die vergangenen Daten zu erhalten.