MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come formattare la data in MongoDB

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.