Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De $dateTrunc expressie-operator kapt een datum af naar de dichtstbijzijnde opgegeven eenheid (bijvoorbeeld uur, dag, maand). Het is handig bij het werken met tijdreeksgegevens of bij het groeperen van gegevens op specifieke tijdsintervallen. Deze operator kan worden gebruikt om datumberekeningen te vereenvoudigen en te standaardiseren.
Syntaxis
$dateTrunc: {
date: <dateExpression>,
unit: "<unit>",
binSize: <number>, // optional
timezone: "<timezone>", // optional
startOfWeek: "<day>" // optional (used when unit is "week")
}
Parameterwaarden
| Kenmerk | Description |
|---|---|
date |
De datum die moet worden afgekapt. |
unit |
De eenheid waarop de datum moet worden afgekapt. Ondersteunde waarden zijn onder andere year, , monthweek, day, hour, minute, en secondmillisecond. |
binSize |
(Optioneel) De grootte van elke bin voor afkapping. Als dit bijvoorbeeld binSize 2 is en unit is hour, wordt de datum elke 2 uur afgekapt. |
timezone |
(Optioneel) De tijdzone die moet worden gebruikt voor afkapping. De standaardinstelling is UTC als deze niet is opgegeven. |
Voorbeelden
Bekijk dit voorbeelddocument uit de winkelverzameling.
{
"_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
}
]
}
]
}
Voorbeeld 1: Afkappen tot de dag
Deze query gebruikt $dateTrunc om de lastUpdated tijdstempel af te kapen tot het begin van de dag (00:00:00) in UTC. De operator is handig voor het groeperen of vergelijken van gegevens per kalenderdag, ongeacht de tijd.
db.stores.aggregate([
{
$match: { _id: "e6410bb3-843d-4fa6-8c70-7472925f6d0a" }
},
{
$project: {
_id: 0,
truncatedToDay: {
$dateTrunc: {
date: "$lastUpdated",
unit: "day"
}
}
}
}
])
Deze query retourneert het volgende resultaat.
[
{
"truncatedToDay": "2024-11-29T00:00:00.000Z"
}
]
Voorbeeld 2: Afkappen tot het begin van de week
Deze query gebruikt $dateTrunc om de lastUpdated tijdstempel naar beneden af te ronden tot het begin van de week. Hiermee wordt maandag opgegeven als het begin van de week om een consistente agenda-uitlijning te garanderen.
db.stores.aggregate([
{
$match: { _id: "e6410bb3-843d-4fa6-8c70-7472925f6d0a" }
},
{
$project: {
_id: 0,
truncatedToWeek: {
$dateTrunc: {
date: "$lastUpdated",
unit: "week",
startOfWeek: "Monday"
}
}
}
}
])
Deze query retourneert het volgende resultaat.
[
{
"truncatedToWeek": "2024-11-25T00:00:00.000Z"
}
]