Delen via


$dateToParts

De $dateToParts operator wordt gebruikt voor het extraheren van afzonderlijke onderdelen (Jaar, Maand, Dag, Uur, Minuut, Seconde, Milliseconden, enzovoort) uit een datumobject. De operator is handig voor scenario's waarbij manipulatie of analyse van specifieke datumonderdelen vereist is, zoals sorteren, filteren of samenvoegen van gegevens op basis van afzonderlijke datumonderdelen.

Syntaxis

$dateToParts: {
  date: <dateExpression>,
  timezone: <string>, // optional
  iso8601: <boolean> // optional
}

Parameterwaarden

Kenmerk Description
date De datumexpressie waaruit onderdelen moeten worden geëxtraheerd.
timezone Optional. Hiermee geeft u de tijdzone voor de datum. Standaard ingesteld op UTC als deze niet is opgegeven.
iso8601 Optional. Indien waar, gebruikt de operator iso 8601 week kalendersysteem. Standaard ingesteld op onwaar.

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: Datumonderdelen uit een veld extraheren

Deze query gebruikt $dateToParts om de lastUpdated datum op te splitsen in onderdelen zoals jaar, maand, dag en tijd. Het helpt bij het analyseren of transformeren van afzonderlijke onderdelen van een datum voor verdere verwerking.

db.stores.aggregate([
  {
    $match: { _id: "e6410bb3-843d-4fa6-8c70-7472925f6d0a" }
  },
  {
    $project: {
      _id: 0,
      dateParts: {
        $dateToParts: { 
          date: "$lastUpdated" 
        }
      }
    }
  }
])

Deze query retourneert het volgende resultaat.

[
  {
    "dateParts": {
      "year": 2024,
      "month": 12,
      "day": 4,
      "hour": 11,
      "minute": 50,
      "second": 6,
      "millisecond": 0
    }
  }
]

Voorbeeld 2: tijdzone gebruiken

Met deze query wordt de lastUpdated tijdstempel van een specifiek document geëxtraheerd en opgesplitst in datumonderdelen zoals jaar, maand, dag en uur met behulp van $dateToParts. Als u de tijdzone 'Amerika/New_York' opgeeft, wordt de uitsplitsing van de lokale tijd weergegeven in plaats van UTC.

db.stores.aggregate([
  {
    $match: { _id: "e6410bb3-843d-4fa6-8c70-7472925f6d0a" }
  },
  {
    $project: {
      _id: 0,
      datePartsWithTimezone: {
        $dateToParts: { 
          date: "$lastUpdated", 
          timezone: "America/New_York" 
        }
      }
    }
  }
])

Deze query retourneert het volgende resultaat.

[
  {
    "datePartsWithTimezone": {
      "year": 2024,
      "month": 12,
      "day": 4,
      "hour": 6,
      "minute": 50,
      "second": 6,
      "millisecond": 0
    }
  }
]