sql >> Databáze >  >> NoSQL >> MongoDB

Jak formátovat datum v MongoDB

Pokud máte dokumenty, které ukládají data jako objekty Date, ale chcete je vrátit v jiném formátu, můžete použít $dateToString provozovatel agregátního potrubí.

Můžete například chtít, aby bylo vráceno datum v mm/dd/yyyy formát namísto dlouhého ISODate() formát, který zahrnuje minuty, sekundy, milisekundy atd

$dateToString operátor převede objekt Date na řetězec a volitelně vám umožní určit formát pro výsledný výstup.

Příklad

Předpokládejme, že máme sbírku nazvanou cats s následujícími dokumenty:

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

Můžeme použít $dateToString vrátit tento dokument s daty v jiném formátu.

Odeberme například sekundy a milisekundy z data:

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

Výsledek:

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

Datum se nám podařilo naformátovat pomocí format parametr. Toto je volitelný parametr, který vám umožňuje použít nula nebo více specifikátorů formátu k určení, jak má být datum formátováno.

Viz MongoDB $dateToString Specifikátory formátu pro úplný seznam specifikátorů formátu, které lze použít s $dateToString operátor.

Datum v dd/mm/yyyy Formát

Zde je další příklad, který převádí data na dd/mm/yyyy formát:

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

Výsledek:

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

Datum v mm/dd/yyyy Formát

Nebo jej vložte do mm/dd/yyyy formát, můžeme jednoduše přepnout první dva specifikátory formátu kolem:

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

Výsledek:

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

Vraťte část jednoho data

Můžete zahrnout tolik nebo jen málo specifikátorů formátu, kolik chcete. Můžete například použít pouze jeden specifikátor formátu pro výstup pouze části data s rokem.

Příklad:

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

Výsledek:

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

Mějte však na paměti, že existují i ​​jiné způsoby, jak extrahovat pouze jednu část data z objektu Date. Můžete například použít $year operátor k extrakci roku.

Zde jsou různé operátory pro extrakci každé konkrétní části data:

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

Můžete také použít $dateToParts operátor vrátí dokument, který obsahuje všechny různé části data oddělené do vlastního pole.


  1. jaký je střední rozdíl mezi drahokamy Nest a redis-namespace, když používáme redis s rails/ruby

  2. Redis je jednovláknové. Tak proč bych měl používat salát?

  3. Programově aktualizujte pole v Mongo a Meteor

  4. Spring Redis - Čtení konfigurace ze souboru application.properties