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

3 начина да получите седмицата от среща в MongoDB

MongoDB предоставя различни опции за извличане на части от дата от дата.

Тази статия представя 3 начина за връщане на седмичната част от дата в MongoDB.

Примерни данни

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

{ "_id" : 1, "name" : "Scratch", "born" : ISODate("2021-01-03T23:30:15.123Z") }
{ "_id" : 2, "name" : "Meow", "born" : ISODate("2019-12-08T04:00:12Z") }
{ "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:30:00Z") }

Следващите примери демонстрират различни опции за връщане на седмичната част от born поле на тези документи.

$week Оператор

$week операторът връща седмицата от годината за дата като число между 0 и 53.

Следователно можем да изпълним следния код, за да върнем седмицата от born поле в горния документ.

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthWeek: { $week: "$born" }
        }
    }
  ]
)

Резултат:

{ "birthWeek" : 1 }
{ "birthWeek" : 49 }
{ "birthWeek" : 38 }

Можете също да посочите часовата зона, когато използвате $week оператор.

Вижте MongoDB $week за повече информация и примери.

$dateToString Оператор

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

Има спецификатори на формат за всяка част от датата. По отношение на седмичната част от датата, %U спецификаторът на формат връща седмицата от годината и %V спецификаторът на формат връща седмицата от годината във формат ISO 8601.

Пример:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          birthWeek: { $dateToString: { format: "%U", date: "$born" } },
          birthWeekISO: { $dateToString: { format: "%V", date: "$born" } }
       }
     }
   ]
)

Резултат:

{ "birthWeek" : "01", "birthWeekISO" : "53" }
{ "birthWeek" : "49", "birthWeekISO" : "49" }
{ "birthWeek" : "38", "birthWeekISO" : "39" }

Вижте MongoDB $dateToString за повече информация и примери.

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

$isoWeek Оператор

Ако трябва да върнете седмицата във формат ISO 8601, използвайте $isoWeek . Годината по ISO 8601 започва с понеделник от седмица 1 и завършва с неделята на последната седмица.

Пример:

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthIsoWeek: { $isoWeek: "$born" }
        }
    }
  ]
)

Резултат:

{ "birthIsoWeek" : 53 }
{ "birthIsoWeek" : 49 }
{ "birthIsoWeek" : 39 }

Този резултат е различен от този, когато използвахме $week оператор.

Ето пример, който показва разликата.

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthWeek: { $week: "$born" },
          birthIsoWeek: { $isoWeek: "$born" }
        }
    }
  ]
)

Резултат:

{ "birthWeek" : 1, "birthIsoWeek" : 53 }
{ "birthWeek" : 49, "birthIsoWeek" : 49 }
{ "birthWeek" : 38, "birthIsoWeek" : 39 }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да управлявате документи в MongoDB

  2. ClusterControl - Разширено управление на архивиране - MongoDB

  3. Разгръщане на MongoDB с помощта на Docker

  4. Автоматично генерирано поле за MongoDB с помощта на Spring Boot

  5. Проверете дали MongoDB upsert направи вмъкване или актуализация