MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak sformatować datę w MongoDB

Jeśli masz dokumenty, które przechowują daty jako obiekty Date, ale chcesz zwrócić je w innym formacie, możesz użyć $dateToString operator rurociągu kruszywa.

Na przykład możesz chcieć, aby data została zwrócona w formacie mm/dd/yyyy format zamiast długiej ISODate() format zawierający minuty, sekundy, milisekundy itp.

$dateToString operator konwertuje obiekt Date na łańcuch i opcjonalnie pozwala określić format wynikowego wyniku.

Przykład

Załóżmy, że mamy kolekcję o nazwie cats z następującymi dokumentami:

{ "_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") }

Możemy użyć $dateToString aby zwrócić ten dokument z datami w innym formacie.

Na przykład usuńmy sekundy i milisekundy z daty:

db.cats.aggregate(
   [
     {
       $project: {
          name: 1,
          formattedDate: { $dateToString: { format: "%Y-%m-%d %H:%M", date: "$born" } }
       }
     }
   ]
)

Wynik:

{ "_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" }

Udało nam się sformatować datę za pomocą format parametr. Jest to parametr opcjonalny, który pozwala na użycie zerowej lub większej liczby specyfikatorów formatu do wskazania, jak data powinna być sformatowana.

Zobacz MongoDB $dateToString Specyfikatory formatu dla pełnej listy specyfikatorów formatu, których można używać z $dateToString operatora.

Data w dd/mm/yyyy Formatuj

Oto kolejny przykład, który konwertuje daty na dd/mm/yyyy format:

db.cats.aggregate(
   [
     {
       $project: {
          _id: 0,
          formattedDate: { $dateToString: { format: "%d/%m/%Y", date: "$born" } }
       }
     }
   ]
)

Wynik:

{ "formattedDate" : "03/01/2021" }
{ "formattedDate" : "08/12/2019" }
{ "formattedDate" : "24/09/2020" }

Data w mm/dd/yyyy Formatuj

Lub umieść go w mm/dd/yyyy format, możemy po prostu zamienić pierwsze dwa specyfikatory formatu wokół:

db.cats.aggregate(
   [
     {
       $project: {
          _id: 0,
          formattedDate: { $dateToString: { format: "%m/%d/%Y", date: "$born" } }
       }
     }
   ]
)

Wynik:

{ "formattedDate" : "01/03/2021" }
{ "formattedDate" : "12/08/2019" }
{ "formattedDate" : "09/24/2020" }

Zwróć część z jedną datą

Możesz podać tyle lub kilka specyfikatorów formatu, ile chcesz. Na przykład możesz użyć tylko jednego specyfikatora formatu, aby wyprowadzić tylko część roku daty.

Przykład:

db.cats.aggregate(
   [
     {
       $project: {
          _id: 0,
          formattedDate: { $dateToString: { format: "%Y", date: "$born" } }
       }
     }
   ]
)

Wynik:

{ "formattedDate" : "2021" }
{ "formattedDate" : "2019" }
{ "formattedDate" : "2020" }

Pamiętaj jednak, że istnieją inne sposoby wyodrębnienia tylko jednej części daty z obiektu Date. Na przykład możesz użyć $year operatora do wyodrębnienia roku.

Oto różne operatory do wyodrębniania poszczególnych części daty:

  • $dayOfWeek
  • $dayOfMonth
  • $dayOfYear
  • $hour
  • $isoWeek
  • $isoWeekYear
  • $isoDayOfWeek
  • $millisecond
  • $minute
  • $month
  • $second
  • $week
  • $year

Możesz także użyć $dateToParts operatora, aby zwrócić dokument, który zawiera wszystkie różne części daty oddzielone do ich własnego pola.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak formatować liczby w SQL

  2. Agregacja z aktualizacją w mongoDB

  3. Nie można nadpisać modelu po skompilowaniu Mongoose

  4. Zmień typ pola w agregacji mongoDB i czy $lookup używa indeksu na polach, czy nie?

  5. Mongo przesuń do tablicy wewnątrz tablicy