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.