sql >> Database >  >> NoSQL >> MongoDB

Hoe de datum in MongoDB te formatteren?

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.


  1. Hoe het CPU-gebruik van de Redis-server te verbeteren?

  2. MongoDB $asin

  3. Geospatiale ondersteuning in MongoDB

  4. AOF- en RDB-back-ups in redis