Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Operatorn $dateToString används för att konvertera ett datumobjekt till en sträng i ett angivet format. Det används ofta i aggregeringspipelines för att formatera datumfält för rapportering, frågor eller visning. Den här operatorn är mycket mångsidig och gör att du kan definiera anpassade datumformat.
Syntax
{
$dateToString: {
format: "<format_string>",
date: <date_expression>,
timezone: "<timezone>",
onNull: "<replacement_value>"
}
}
Parameterar
| Parameter | Description |
|---|---|
format |
En sträng som anger formatet för utdatadatumet. |
date |
Datumuttrycket som ska formateras. |
timezone |
(Valfritt) En sträng som anger tidszonen. Standardvärdet är UTC om det inte anges. |
onNull |
(Valfritt) Ett värde som ska returneras om fältet date är null eller saknas. |
Formatera specificerare
| Symbol | Meaning |
|---|---|
%Y |
År (fyra siffror) |
%m |
Månad (två siffror) |
%d |
Dag i månaden (två siffror) |
%H |
Timme (24-timmars, två siffror) |
%M |
Minut (två siffror) |
%S |
Andra (två siffror) |
%L |
Millisekunder (tre siffror) |
Examples
Överväg det här exempeldokumentet från butiksamlingen.
{
"_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
}
]
}
]
}
Exempel 1: Formatera ett datumfält till en ISO-liknande sträng
Den här frågan använder $dateToString operatorn för att formatera tidsstämpeln lastUpdated till en YYYY-MM-DD sträng. Det hjälper dig att presentera datum i ett läsbart format som är lämpligt för loggar, rapporter eller användargränssnitt.
db.stores.aggregate([
{
$match: { _id: "e6410bb3-843d-4fa6-8c70-7472925f6d0a" }
},
{
$project: {
_id: 0,
formattedDate: {
$dateToString: {
format: "%Y-%m-%d",
date: "$lastUpdated"
}
}
}
}
])
Den här frågan returnerar följande resultat.
[
{
"formattedDate": "2024-12-04"
}
]
Exempel 2: Hantera nullvärden
Den här frågan formaterar tidsstämpeln för obefintliga fält lastUpdated_new som en YYYY-MM-DD sträng med hjälp av $dateToString. Med tanke på att datumet saknas eller null ersätter det en reservsträng "Inget datum tillgängligt" via onNull-alternativet.
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"
}
}
}
}
])
Den här frågan returnerar följande resultat.
[
{
"formattedDateOrDefault": "No date available"
}
]