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 $dateToString Operator wird verwendet, um ein Datumsobjekt in eine Zeichenfolge in einem angegebenen Format zu konvertieren. Es wird häufig in Aggregationspipelinen verwendet, um Datumsfelder für Berichte, Abfragen oder Anzeigezwecke zu formatieren. Dieser Operator ist sehr vielseitig und ermöglicht es Ihnen, benutzerdefinierte Datumsformate zu definieren.
Syntax
{
$dateToString: {
format: "<format_string>",
date: <date_expression>,
timezone: "<timezone>",
onNull: "<replacement_value>"
}
}
Die Parameter
| Parameter | Description |
|---|---|
format |
Eine Zeichenfolge, die das Format des Ausgabedatums angibt. |
date |
Der zu formatierende Datumsausdruck. |
timezone |
(Optional) Eine Zeichenfolge, die die Zeitzone angibt. Wenn dies nicht angegeben ist, wird standardmäßig UTC verwendet. |
onNull |
(Optional) Ein Wert, der zurückgegeben werden soll, wenn das date Feld null fehlt. |
Formatbezeichner
| Symbol | Bedeutung |
|---|---|
%Y |
Jahr (vier Ziffern) |
%m |
Monat (zwei Ziffern) |
%d |
Tag des Monats (zwei Ziffern) |
%H |
Stunde (24 Stunden, zwei Ziffern) |
%M |
Minute (zwei Ziffern) |
%S |
Sekunde (zwei Ziffern) |
%L |
Millisekunden (drei Ziffern) |
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: Formatieren eines Datumsfelds in eine ISO-ähnliche Zeichenfolge
Diese Abfrage verwendet $dateToString den Operator, um den lastUpdated Zeitstempel in eine YYYY-MM-DD Zeichenfolge zu formatieren. Es hilft, Datumsangaben in einem lesbaren Format darzustellen, das für Protokolle, Berichte oder Ui geeignet ist.
db.stores.aggregate([
{
$match: { _id: "e6410bb3-843d-4fa6-8c70-7472925f6d0a" }
},
{
$project: {
_id: 0,
formattedDate: {
$dateToString: {
format: "%Y-%m-%d",
date: "$lastUpdated"
}
}
}
}
])
Diese Abfrage gibt das folgende Ergebnis zurück.
[
{
"formattedDate": "2024-12-04"
}
]
Beispiel 2: Behandeln von Nullwerten
Diese Abfrage formatiert den nicht vorhandenen Feldzeitstempel lastUpdated_new als YYYY-MM-DD Zeichenfolge mit $dateToString. Wenn das Datum fehlt oder null ist, ersetzt es eine Fallbackzeichenfolge "Kein Datum verfügbar" über die OnNull-Option.
db.stores.aggregate([
{
$match: { _id: "e6410bb3-843d-4fa6-8c70-7472925f6d0a" }
},
{
$project: {
_id: 0,
formattedDateOrDefault: {
$dateToString: {
format: "%Y-%m-%d",
date: "$lastUpdated_new", // field doesn't exist
onNull: "No date available"
}
}
}
}
])
Diese Abfrage gibt das folgende Ergebnis zurück.
[
{
"formattedDateOrDefault": "No date available"
}
]