MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да форматирате датата в MongoDB

Ако имате документи, които съхраняват дати като обекти Date, но искате да ги върнете в различен формат, можете да използвате $dateToString оператор на агрегатен тръбопровод.

Например, може да искате дата да бъде върната в mm/dd/yyyy формат вместо дългия ISODate() формат, който включва минути, секунди, милисекунди и т.н.

$dateToString операторът преобразува обекта Date в низ и по избор ви позволява да зададете формат за получения резултат.

Пример

Да предположим, че имаме колекция, наречена cats със следните документи:

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

Можем да използваме $dateToString за да върнете този документ с датите в различен формат.

Например, нека премахнем секундите и милисекундите от датата:

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

Резултат:

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

Успяхме да форматираме датата с помощта на format параметър. Това е незадължителен параметър, който ви позволява да използвате нула или повече спецификатори на формат, за да посочите как трябва да бъде форматирана датата.

Вижте MongoDB $dateToString Форматни спецификатори за пълен списък от спецификатори на формат, които могат да се използват с $dateToString оператор.

Дата в dd/mm/yyyy Формат

Ето още един пример, който преобразува датите в dd/mm/yyyy формат:

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

Резултат:

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

Дата в mm/dd/yyyy Формат

Или да го поставите в mm/dd/yyyy формат, можем просто да превключим първите два спецификатора на формат:

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

Резултат:

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

Върнете част от една дата

Можете да включите толкова или толкова малко спецификатори на формат, колкото желаете. Например, можете да използвате само един спецификатор на формат, за да изведете само частта от годината на датата.

Пример:

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

Резултат:

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

Въпреки това, имайте предвид, че има и други начини за извличане само на една част от датата от обект Date. Например, можете да използвате $year оператор за извличане на годината.

Ето различните оператори за извличане на всяка конкретна част от дата:

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

Можете също да използвате $dateToParts оператор, за да върне документ, който съдържа всички различни части за дата, разделени в собствено поле.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB придобива mLab  –  Какви са различните алтернативи за хостинг на MongoDB?

  2. node.js mongodb изберете документ по _id node-mongodb-native

  3. Не може да се стартира/стартира локален mongo db

  4. Попълнете липсващите дати в записите

  5. Намерете всички документи през последните n дни