MongoDB $ datetrunc

MongoDB $ datetrunc

MongoDB stellt dem Aggregat $ datetrunc -Bediener zur Abschneidung der Daten nach dem angegebenen Datum zur Verfügung. Der $ datetrunc -Bediener nimmt nur den einzelnen Datumswert, um ihn im ISO -Format abzuschneiden. Das Argument „Datum“ des $ datetrunc nimmt die Datumswerte zusammen mit der Zeiteinheit an. Der $ datetrunc -Bediener muss diese Eingaben verlangen, um das Datum abzuschneiden. Darüber hinaus können wir optionale Argumente wie Timezone, Binsize und Start in der Woche verwenden, um die Grenze des Datums innerhalb eines Zeitbereichs zu senken. Der $ datetrunc -Bediener unterteilt die Zeit in Binsize -Zeitintervalle in der ausgewählten Zeiteinheit für die Berechnung.

So verwenden Sie den $ datetrunc -Operator in MongoDB?

Der $ datetrunc -Operator wird in MongoDB verwendet, um das angegebene Datum abzuschneiden. Hier arbeiten wir mit der Kollektion „Blumen“ zusammen, deren Dokumente vom $ datetrunc -Operator für die Demonstration verwendet werden. Dafür müssen wir die Dokumente innerhalb der Sammlung „Blumen“ anhängen, indem wir die Methode InsertMany () verwenden. Die Ausgabe nach der Ausführung des Befehls Einfügen von Dokumenten zeigt, dass die Dokumente jetzt in der Sammlung „Blumen“ gespeichert sind.

db.Blumen.InsertMany ([
_id: 0, Typ: "Rose", Order: neues Datum ("2023-03-23T15: 06: 20Z"), Qty: 100,
_id: 1, Typ: "Lilly", Order: neues Datum ("2021-07-19T12: 11: 10z"), Qty: 150,
_id: 2, type: "tulip", order: neues Datum ("2022-12-12t16: 14: 30z"), Qty: 99,
_id: 3, Typ: "Whiterose", Order: neues Datum ("2023-08-13T05: 10: 20Z"), Qty: 500,
_id: 4, Typ: "Lavendel", Reihenfolge: Neues Datum ("2020-01-01T19: 30: 10z"), Qty: 200,
_id: 5, Typ: "Sunflower", Bestellung: Neues Datum ("2021-03-19T12: 12: 12Z"), Qty: 50
]))

Beachten Sie, dass sich im Dokument ein Feld befindet, das mit den Datumswerten festgelegt ist. Wir werden diese Daten mit dem $ datEtrunc -Operator von MongoDB abschneiden.

WriteConcernerrors: [],
InsertDIDs: [
index: 0, _id: 0,
index: 1, _id: 1,
index: 2, _id: 2,
index: 3, _id: 3,
index: 4, _id: 4,
index: 5, _id: 5
],
Ninserted: 5,
Nupserted: 0,
nmatched: 0,
nmodified: 0,
Nremoved: 0,
Upsertiert: []

Beispiel Nr. 1: Verwenden Sie den $ datEtrunc -Operator, um das Datum in MongoDB abzuschneiden

Hier werden wir den $ datTetrunc -Bediener bereitstellen, der einfach das abgeschnittene Datum des angegebenen Datums abruft. Wir haben eine Anfrage an der MongoDB -Hülle gegeben, bei der eine aggregierte Methode verwendet wird, um die anderen Betreiber auszuführen. Wir haben die $ Project -Methode bezeichnet, um die Felder "_id" und "_order" aus dem übereinstimmenden Dokument aufzunehmen. Dann setzen wir ein weiteres Feld "TruncatedResult", in dem die Ergebnisse des $ datetrunc -Operators angezeigt wurden. Wir haben den $ datetrunc -Operator definiert, der mit dem Parameter „Datum“ übergeben und mit dem Feld „$ order“ mit Datumswerten angegeben ist. Der Parameter $ date des $ datEtrunc -Bedieners hat das Datum mit UTC abgeschnitten. Als nächstes haben wir den Parameter "Einheit" übergeben, in dem die Zeit als Zeichenfolge "Tag" ausgedrückt wird. Der "Tag" -Werte zeigt an, dass das Isodat für den Beginn des Tages, das von $ datetrunc im Datum zurückgegeben wird.

db.Blumen.aggregiert ([

$ project:
_id: 1,
Bestellung: 1,
verkürzt:
$ datetrunc:
Datum: "$ order", Einheit: "Tag"




]))

Die Ausgabe aus dem oben genannten $ datetrunc -Operator zeigte die verkürzten Daten des gesamten Dokumentfelds „Order“ im Bereich Truncatedat.

[

_id: 0,
Bestellung: Isodat ("2023-03-23T15: 06: 20.000Z "),
TruncatedDate: Isodat ("2023-03-23T00: 00: 00.000Z ")
,

_id: 1,
Bestellung: Isodat ("2021-07-19T12: 11: 10.000Z "),
TruncatedDate: Isodat ("2021-07-19T00: 00: 00.000Z ")
,

_id: 2,
Bestellung: Isodat ("2022-12-12t16: 14: 30.000Z "),
TruncatedDate: Isodat ("2022-12-12t00: 00: 00.000Z ")
,

_id: 3,
Bestellung: Isodat ("2023-08-13T05: 10: 20.000Z "),
TruncatedDate: Isodat ("2023-08-13T00: 00: 00.000Z ")
,

_id: 4,
Bestellung: Isodat ("2020-01-01T19: 30: 10.000Z "),
TruncatedDate: Isodat ("2020-01-01T00: 00: 00.000Z ")
,

_id: 5,
Bestellung: Isodat ("2021-03-19T12: 12: 12.000Z "),
TruncatedDate: Isodat ("2021-03-19T00: 00: 00.000Z ")

]

Beispiel Nr. 2: Verwenden des $ datEtrunc -Operators mit dem Binsize -Argument, um das Datum in MongoDB abzuschneiden

Das optionale Argument des Binsize -Arguments des $ datetrunc -Operators ist ein Zeitwert, der als numerischer Ausdruck ausgedrückt wird. Der numerische Ausdruck muss eine positive Ganzzahl ungleich Null sein. Wenn das Argument von Binsize und Einheiten zusammen zusammen verwendet werden. Wir haben das Dokument genommen, dessen Feld "Typ" Whiterose ", der hier mit der $ Match -Phase übereinstimmt, hier übereinstimmt.

Danach wurde der $ datTetrunc -Betreiber im $ -Projektbetreiber definiert, um das Datum mit den bereitgestellten Inputs abzuschneiden. Der $ datetrunc nimmt zuerst das Eingabedatum "Datum", wobei das Feld "$ order" angegeben ist, da er die Datumswerte enthält. Dann haben wir den Eingang "Einheit" mit der Zeit "Stunde" und den "Binsize" -Intrag mit dem numerischen Wert "2" eingestellt.

db.Blumen.aggregiert ([
$ Match: "Typ": "Whiterose",

$ project:
_id: 1,
Bestellung: 1,
truncatedResult:
$ datetrunc:
Datum: "$ order", Einheit: "Hour", Binsize: 2




]))

Die "Einheit" -Zeit ist "Stunde" und die "Binsize" hat einen Wert von "2". Die Zeit zwischen dem abgeschnittenen Datumsrückgang vom $ datEtrunc -Bediener und dem Bestelldatum beträgt also zwei Stunden.

[

_id: 3,
Bestellung: Isodat ("2023-08-13T05: 10: 20.000Z "),
TrincatedResult: Isodat ("2023-08-13T04: 00: 00.000Z ")

]

Beispiel Nr. 3: Verwenden des $ datEtrunc -Operator

Wir haben ein weiteres Optionsargument "StartOfWeek" des $ datEtrunc -Operators, der den Beginn der Woche angibt. Das Argument „Startofweek“ wird nur ausgeführt, wenn die „Einheit“ die Woche ist. Hier erwerben wir diese Dokumente vom $ Match -Operator, den der $ Nin -Betreiber im Ausdruck nicht ausgewählt hat. Anschließend haben wir den $ datetrunc -Bediener im Feld "Truncdate" $ project stay bereitgestellt. Die Argumente werden innerhalb des $ datetrunc -Operators übergeben, um das Datum zu reduzieren. Das optionale Argument "StartOfWeek" ist auch im $ datetrunc -Betreiber mit der Woche "Mittwoch" eingestellt. Der $ datetrunc -Betreiber schnappt das Feld "Order" in einen Zeitraum „1“ -Binsize und Einheit "Woche" im UTC -Zeitzone mit dem Start der Woche in der UTC -Zeitzone ab.

db.Blumen.aggregiert ([
$ Match: "_id": $ nin: [1, 3, 5],

$ project:
_id: 1,
Bestellung: 1,
truncdate:
$ datetrunc:
Datum: "$ order", Einheit: "Woche", Binsize: 1,
TimeZone: "UTC", Start in Week: "Mittwoch"




]))

Die Ergebnisse des $ datEtrunc -Operators werden mit den verkürzten Daten in einem Tag „Start -of -Week“ sowie den tatsächlichen Datumswerten generiert.

[

_id: 0,
Bestellung: Isodat ("2023-03-23T15: 06: 20.000Z "),
Truncdate: Isodat ("2023-03-22T00: 00: 00.000Z ")
,

_id: 2,
Bestellung: Isodat ("2022-12-12t16: 14: 30.000Z "),
Truncdate: Isodat ("2022-12-07T00: 00: 00.000Z ")
,

_id: 4,
Bestellung: Isodat ("2020-01-01T19: 30: 10.000Z "),
Truncdate: Isodat ("2020-01-01T00: 00: 00.000Z ")

]

Beispiel Nr. 4: Verwenden Sie den $ datEtrunc -Operator, um Null in MongoDB zurückzugeben

Der $ datetrunc -Operator gibt auch den Nullwert in einem Fall zurück, in dem das "Start der Week" das Feld, das entweder leer oder null zugeordnet ist Wert. Betrachten wir diese Aussage mit dem Beispielskript von MongoDB. Wir haben eine neue Aufnahme des Feld. Der $ datetrunc -Operator nimmt das Eingangsdatum mit dem Feld "Order", das Gerät als Woche und Binsize "2" eines "America/los_angeles" -Timezone über. Beachten Sie, dass wir den $ datTetrunc -Operator nicht mit dem Argument „starten“ übergeben haben, da die Woche dem Parameter „Einheit“ zugewiesen ist.

db.Blumen.aggregiert ([

$ project:
_id: 1,
Bestellung: 1,
TruncatedOutput:
$ datetrunc:
Datum: "$ orderDate", Einheit: "Woche", Binsize: 2,
TimeZone: "America/los_Angeles"




]))

Dort haben wir das Null -Ergebnis in das Feld „TruncatedOutput“ erhalten, da wir das Argument „StartOfWeek“ nicht in den $ datTetrunc -Operator eingeben, obwohl das Gerät eine Woche ist.

[

_id: 0,
Bestellung: Isodat ("2023-03-23T15: 06: 20.000Z "),
TruncatedOutput: NULL
,

_id: 1,
Bestellung: Isodat ("2021-07-19T12: 11: 10.000Z "),
TruncatedOutput: NULL
,

_id: 2,
Bestellung: Isodat ("2022-12-12t16: 14: 30.000Z "),
TruncatedOutput: NULL
,

_id: 3,
Bestellung: Isodat ("2023-08-13T05: 10: 20.000Z "),
TruncatedOutput: NULL
,

_id: 4,
Bestellung: Isodat ("2020-01-01T19: 30: 10.000Z "),
TruncatedOutput: NULL
,

_id: 5,
Bestellung: Isodat ("2021-03-19T12: 12: 12.000Z "),
TruncatedOutput: NULL

]

Beispiel Nr. 5: Verwenden Sie den $ datetrunc -Operator, um das Datum im $ Group -Operator in MongoDB abzuschneiden

Wir haben den $ datetrunc -Operator in der $ Group -Stufe von MongoDB verwendet, die das Datum innerhalb des Gruppenschlüssels abschneidet und die Summeergebnisse des angegebenen Feldes erhalten. Wir haben die $ Group -Stufe bereitgestellt und einen Gruppenschlüssel „_id“ bereitgestellt, in dem das neue Feld „Truncdate“ für die Durchführung des $ datEtrunc -Vorgangs eingerichtet wird. An den $ datetrunc -Bediener haben wir das "Datum" als "Bestell" -Feld mit der "Monats" -Nit Time und der Binsize von "5" eingegeben, die "5" sind. Danach setzen wir ein weiteres Feld „AddQuantity“, in dem der $ summe Operator mit dem Feld $ qty für den Additionsvorgang zugewiesen wird.

db.Blumen.aggregiert ([

$ gruppe:
_Ausweis:
Datetrunc:
$ datetrunc:
Datum: "$ order", Einheit: "Monat", Binsize: 5


,
AddQuantity: $ sum: "$ qty"


]))

Das Datum des Feldes „Order“ wird mit dem $ DatetRunc -Operator in einer Gruppe von $ gruppen auf fünf Monate abgeschnitten, und die Gesamtzahl der Mengenwerte wird ebenfalls in der Ausgabe zurückgegeben.

[

_id: datEtrunc: isodat ("2020-01-01t00: 00: 00.000Z "),
AddQuantity: 200
,

_id: datEtrunc: isodat ("2020-11-01t00: 00: 00.000Z "),
AddQuantity: 50
,

_id: datEtrunc: isodat ("2022-12-01t00: 00: 00: 00.000Z "),
AddQuantity: 199
,

_id: datetRunc: isodat ("2021-04-01t00: 00: 00.000Z "),
AddQuantity: 150
,

_id: datetRunc: isodat ("2023-05-01t00: 00: 00.000Z "),
AddQuantity: 500

]

Abschluss

Wir haben einen MongoDB -Operator $ datetrunc abdeckt, der mit dem Datum funktioniert, um sie abzuschneiden. Wir haben verschiedene Argumente des $ datetrunc -Operators mit Beispielen untersucht. Der $ datetrunc -Bediener befasst sich nur mit den Felddokumenten des Datums in der Sammlung von MongoDB. Der $ datetrunc -Operator wird hier mit dem Argument „Binsize“ und dem Argument „Start -of -Week“ verwendet, die optional sind, aber eine wichtige Rolle spielen, während die Daten in MongoDB abgeschnitten werden.