Als u documenten heeft waarin datums zijn opgeslagen als datumobjecten, maar u wilt ze in een ander formaat retourneren, kunt u de $dateToString gebruiken geaggregeerde pijpleidingbeheerder.
U wilt bijvoorbeeld dat een datum wordt geretourneerd in mm/dd/yyyy formaat in plaats van de lange ISODate() formaat dat minuten, seconden, milliseconden, enz. bevat
De $dateToString operator converteert het Date-object naar een tekenreeks en stelt u optioneel in staat om een formaat op te geven voor de resulterende uitvoer.
Voorbeeld
Stel dat we een verzameling hebben met de naam cats met de volgende documenten:
{ "_id" : 1, "name" : "Scratch", "born" : ISODate("2021-01-03T23:30:15.123Z") }
{ "_id" : 2, "name" : "Meow", "born" : ISODate("2019-12-08T04:00:20.112Z") }
{ "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:45:01.007Z") }
We kunnen $dateToString . gebruiken om dat document terug te sturen met de datums in een ander formaat.
Laten we bijvoorbeeld de seconden en milliseconden van de datum verwijderen:
db.cats.aggregate(
[
{
$project: {
name: 1,
formattedDate: { $dateToString: { format: "%Y-%m-%d %H:%M", date: "$born" } }
}
}
]
) Resultaat:
{ "_id" : 1, "name" : "Scratch", "formattedDate" : "2021-01-03 23:30" }
{ "_id" : 2, "name" : "Meow", "formattedDate" : "2019-12-08 04:00" }
{ "_id" : 3, "name" : "Fluffy", "formattedDate" : "2020-09-24 10:45" }
We waren in staat om de datum te formatteren met behulp van het format parameter. Dit is een optionele parameter waarmee u nul of meer indelingsspecificaties kunt gebruiken om aan te geven hoe de datum moet worden opgemaakt.
Zie MongoDB $dateToString Formaatspecificaties voor een volledige lijst van formaatspecificaties die kunnen worden gebruikt met de $dateToString telefoniste.
Datum in dd/mm/yyyy Formaat
Hier is nog een voorbeeld dat de datums converteert naar dd/mm/yyyy formaat:
db.cats.aggregate(
[
{
$project: {
_id: 0,
formattedDate: { $dateToString: { format: "%d/%m/%Y", date: "$born" } }
}
}
]
) Resultaat:
{ "formattedDate" : "03/01/2021" }
{ "formattedDate" : "08/12/2019" }
{ "formattedDate" : "24/09/2020" } Datum in mm/dd/yyyy Formaat
Of om het in mm/dd/yyyy . te zetten formaat, kunnen we eenvoudig de eerste twee formaatspecificaties omwisselen:
db.cats.aggregate(
[
{
$project: {
_id: 0,
formattedDate: { $dateToString: { format: "%m/%d/%Y", date: "$born" } }
}
}
]
) Resultaat:
{ "formattedDate" : "01/03/2021" }
{ "formattedDate" : "12/08/2019" }
{ "formattedDate" : "09/24/2020" } Retourneer een enkel datumdeel
U kunt zo veel of zo weinig formaatspecificaties opnemen als u wilt. U kunt bijvoorbeeld slechts één formaatspecificatie gebruiken om alleen het jaargedeelte van de datum uit te voeren.
Voorbeeld:
db.cats.aggregate(
[
{
$project: {
_id: 0,
formattedDate: { $dateToString: { format: "%Y", date: "$born" } }
}
}
]
) Resultaat:
{ "formattedDate" : "2021" }
{ "formattedDate" : "2019" }
{ "formattedDate" : "2020" }
Houd er echter rekening mee dat er andere manieren zijn om slechts een enkel datumgedeelte uit een Date-object te extraheren. U kunt bijvoorbeeld de $year . gebruiken operator om het jaar te extraheren.
Hier zijn de verschillende operators voor het extraheren van elk specifiek datumgedeelte:
$dayOfWeek$dayOfMonth$dayOfYear$hour$isoWeek$isoWeekYear$isoDayOfWeek$millisecond$minute$month$second$week$year
U kunt ook de $dateToParts . gebruiken operator om een document terug te sturen dat alle verschillende datumdelen bevat, gescheiden in hun eigen veld.