Se disponi di documenti che memorizzano le date come oggetti Date, ma desideri restituirli in un formato diverso, puoi utilizzare il $dateToString
operatore di gasdotto aggregato.
Ad esempio, potresti voler restituire una data in mm/dd/yyyy
format invece del lungo ISODate()
formato che include minuti, secondi, millisecondi, ecc
Il $dateToString
converte l'oggetto Date in una stringa e, facoltativamente, consente di specificare un formato per l'output risultante.
Esempio
Supponiamo di avere una collezione chiamata cats
con i seguenti documenti:
{ "_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") }
Possiamo usare $dateToString
per restituire quel documento con le date in un formato diverso.
Ad esempio, rimuoviamo i secondi e i millisecondi dalla data:
db.cats.aggregate(
[
{
$project: {
name: 1,
formattedDate: { $dateToString: { format: "%Y-%m-%d %H:%M", date: "$born" } }
}
}
]
)
Risultato:
{ "_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" }
Siamo stati in grado di formattare la data utilizzando il format
parametro. Questo è un parametro facoltativo che consente di utilizzare zero o più identificatori di formato per indicare come deve essere formattata la data.
Vedi MongoDB $dateToString
Identificatori di formato per un elenco completo degli identificatori di formato che possono essere utilizzati con $dateToString
operatore.
Data in dd/mm/yyyy
Formato
Ecco un altro esempio che converte le date in dd/mm/yyyy
formato:
db.cats.aggregate(
[
{
$project: {
_id: 0,
formattedDate: { $dateToString: { format: "%d/%m/%Y", date: "$born" } }
}
}
]
)
Risultato:
{ "formattedDate" : "03/01/2021" } { "formattedDate" : "08/12/2019" } { "formattedDate" : "24/09/2020" }
Data in mm/dd/yyyy
Formato
O per inserirlo in mm/dd/yyyy
format, possiamo semplicemente cambiare i primi due identificatori di formato:
db.cats.aggregate(
[
{
$project: {
_id: 0,
formattedDate: { $dateToString: { format: "%m/%d/%Y", date: "$born" } }
}
}
]
)
Risultato:
{ "formattedDate" : "01/03/2021" } { "formattedDate" : "12/08/2019" } { "formattedDate" : "09/24/2020" }
Restituisci una parte con data singola
Puoi includere tutti o pochi specificatori di formato che desideri. Ad esempio, puoi utilizzare un solo identificatore di formato per visualizzare solo la parte relativa all'anno della data.
Esempio:
db.cats.aggregate(
[
{
$project: {
_id: 0,
formattedDate: { $dateToString: { format: "%Y", date: "$born" } }
}
}
]
)
Risultato:
{ "formattedDate" : "2021" } { "formattedDate" : "2019" } { "formattedDate" : "2020" }
Tuttavia, tieni presente che esistono altri modi per estrarre solo una singola parte di data da un oggetto Date. Ad esempio, puoi utilizzare $year
operatore per estrarre l'anno.
Ecco i vari operatori per l'estrazione di ogni specifica parte di data:
$dayOfWeek
$dayOfMonth
$dayOfYear
$hour
$isoWeek
$isoWeekYear
$isoDayOfWeek
$millisecond
$minute
$month
$second
$week
$year
Puoi anche usare il $dateToParts
operatore per restituire un documento che contiene tutte le varie parti della data separate nel proprio campo.