Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der $dateTrunc Ausdrucksoperator schneidet ein Datum auf die nächste angegebene Einheit ab (z. B. Stunde, Tag, Monat). Es ist nützlich, wenn Sie mit Zeitreihendaten arbeiten oder Daten nach bestimmten Zeitintervallen gruppieren. Dieser Operator kann verwendet werden, um Datumsberechnungen zu vereinfachen und zu standardisieren.
Syntax
$dateTrunc: {
date: <dateExpression>,
unit: "<unit>",
binSize: <number>, // optional
timezone: "<timezone>", // optional
startOfWeek: "<day>" // optional (used when unit is "week")
}
Die Parameter
| Parameter | Description |
|---|---|
date |
Das Datum, das abgeschnitten werden soll. |
unit |
Die Einheit, in der das Datum abgeschnitten werden soll. Zu den unterstützten Werten gehören year: , month, week, day, hour, minute, , und secondmillisecond. |
binSize |
(Optional) Die Größe der einzelnen Fächer zum Abschneiden. Wenn beispielsweise binSize "2" ist und unit "2" lautet hour, wird das Datum alle 2 Stunden abgeschnitten. |
timezone |
(Optional) Die zeitzone, die zum Abschneiden verwendet werden soll. Wenn nicht angegeben, wird standardmäßig UTC verwendet. |
Examples
Betrachten Sie dieses Beispieldokument aus der Stores-Sammlung.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Beispiel 1: Abschneiden auf den Tag
Diese Abfrage verwendet $dateTrunc , um den lastUpdated Zeitstempel am Anfang des Tages (00:00:00:00) in UTC abzuschneiden. Der Operator ist nützlich, um Daten unabhängig von der Uhrzeit nach Kalendertag zu gruppieren oder zu vergleichen.
db.stores.aggregate([
{
$match: { _id: "e6410bb3-843d-4fa6-8c70-7472925f6d0a" }
},
{
$project: {
_id: 0,
truncatedToDay: {
$dateTrunc: {
date: "$lastUpdated",
unit: "day"
}
}
}
}
])
Diese Abfrage gibt das folgende Ergebnis zurück.
[
{
"truncatedToDay": "2024-11-29T00:00:00.000Z"
}
]
Beispiel 2: Abschneiden am Anfang der Woche
Diese Abfrage wird verwendet $dateTrunc , um den lastUpdated Zeitstempel bis zum Anfang der Woche nach unten zu runden. Es gibt Montag als Anfang der Woche an, um eine konsistente Kalenderausrichtung sicherzustellen.
db.stores.aggregate([
{
$match: { _id: "e6410bb3-843d-4fa6-8c70-7472925f6d0a" }
},
{
$project: {
_id: 0,
truncatedToWeek: {
$dateTrunc: {
date: "$lastUpdated",
unit: "week",
startOfWeek: "Monday"
}
}
}
}
])
Diese Abfrage gibt das folgende Ergebnis zurück.
[
{
"truncatedToWeek": "2024-11-25T00:00:00.000Z"
}
]