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 $dateAdd Operator fügt eine angegebene Anzahl von Zeiteinheiten zu einem Datum hinzu. Es ist nützlich in Szenarien, in denen Sie zukünftige Datumsangaben basierend auf einem bestimmten Datum und einem Zeitintervall berechnen müssen.
Syntax
$dateAdd: {
startDate: <expression>,
unit: <string>,
amount: <number>,
timezone: <string> // Optional
}
Die Parameter
| Parameter | Description |
|---|---|
startDate |
Das Startdatum für den Additionsvorgang. |
unit |
Die Zeiteinheit, die hinzugefügt werden soll. Gültige Einheiten sind: year, , quarter, month, weekday, hourminute, , . secondmillisecond |
amount |
Die Anzahl der hinzuzufügenden Einheiten. |
timezone |
Wahlfrei. Die Zeitzone, die für den Vorgang verwendet werden soll. |
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: Hinzufügen von Tagen zu einem Datum
Diese Abfrage projiziert eventName und berechnet eine newEndDate durch Hinzufügen von 7 Tagen zu einem Datum, das aus geschachtelten Feldern Jahr, Monat und Tag erstellt wurde. Das Ergebnis ist ein vereinfachtes Dokument mit dem Ereignisnamen und dem erweiterten Enddatum.
db.stores.aggregate([
{ $match: { _id: "e6410bb3-843d-4fa6-8c70-7472925f6d0a" } },
{ $unwind: "$promotionEvents" },
{ $unwind: "$promotionEvents.promotionalDates" },
{
$project: {
eventName: 1,
newEndDate: {
$dateAdd: {
startDate: {
$dateFromParts: {
year: "$promotionEvents.promotionalDates.endDate.Year",
month: "$promotionEvents.promotionalDates.endDate.Month",
day: "$promotionEvents.promotionalDates.endDate.Day"
}
},
unit: "day",
amount: 7
}
}
}
}
])
Diese Abfrage gibt das folgende Ergebnis zurück.
[
{
"_id": "e6410bb3-843d-4fa6-8c70-7472925f6d0a",
"newEndDate": "2024-10-06T00:00:00.000Z"
}
]
Beispiel 2: Hinzufügen von Monaten zu einem Datum
Diese Aggregationsabfrage projiziert eventName und berechnet ein "newStartDate", indem 1 Monat zu einem rekonstruierten Anfangstermin aus geschachtelten Heraufführungsfeldern hinzugefügt wird. Es hilft dabei, ein angepasstes Startdatum basierend auf dem ursprünglichen Zeitplan zu ermitteln. Diese Abfrage gibt den eventName jedes Dokuments und ein newStartDate zurück, das 1 Monat nach dem ursprünglichen StartDate aus geschachtelten Ereignisdaten für Höherstufungsereignisse liegt.
db.stores.aggregate([
{ $match: { _id: "e6410bb3-843d-4fa6-8c70-7472925f6d0a" } },
{ $unwind: "$promotionEvents" },
{ $unwind: "$promotionEvents.promotionalDates" },
{
$project: {
eventName: "$promotionEvents.eventName",
newStartDate: {
$dateAdd: {
startDate: {
$dateFromParts: {
year: "$promotionEvents.promotionalDates.startDate.Year",
month: "$promotionEvents.promotionalDates.startDate.Month",
day: "$promotionEvents.promotionalDates.startDate.Day"
}
},
unit: "month",
amount: 1
}
}
}
}
])
Diese Abfrage gibt das folgende Ergebnis zurück.
[
{
"_id": "e6410bb3-843d-4fa6-8c70-7472925f6d0a",
"eventName": "Massive Markdown Mania",
"newStartDate": "2024-10-21T00:00:00.000Z"
}
]
Verwandte Inhalte
- Überprüfen Sie die Optionen für die Migration von MongoDB zu Azure DocumentDB.
- Weitere Informationen zur Featurekompatibilität mit MongoDB.