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

3 sposoby na uzyskanie tygodnia z daty w MongoDB

MongoDB udostępnia różne opcje wyodrębniania części daty z daty.

W tym artykule przedstawiono 3 sposoby na zwrócenie części tygodnia z daty w MongoDB.

Przykładowe dane

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:12Z") }
{ "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:30:00Z") }

Poniższe przykłady pokazują różne opcje zwracania części tygodnia z born pola tych dokumentów.

$week Operator

$week operator zwraca tydzień roku dla daty jako liczbę z zakresu od 0 do 53.

Dlatego możemy uruchomić następujący kod, aby zwrócić tydzień od born w powyższym dokumencie.

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

Wynik:

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

Możesz również określić strefę czasową podczas korzystania z $week operator.

Zobacz MongoDB $week aby uzyskać więcej informacji i przykładów.

$dateToString Operator

$dateToString operator konwertuje obiekt daty na ciąg znaków zgodnie z formatem określonym przez użytkownika. Użytkownik może zatem określić, że w razie potrzeby zwracana jest tylko część tygodnia.

Dla każdej części daty istnieją specyfikatory formatu. W odniesieniu do części daty tygodnia, %U specyfikator formatu zwraca tydzień roku, a %V specyfikator formatu zwraca tydzień roku w formacie ISO 8601.

Przykład:

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

Wynik:

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

Zobacz MongoDB $dateToString aby uzyskać więcej informacji i przykładów.

Zobacz także MongoDB $dateToString Specyfikatory formatu dla listy specyfikatorów formatu, których można używać z tym operatorem.

$isoWeek Operator

Jeśli chcesz zwrócić tydzień w formacie ISO 8601, użyj $isoWeek . Rok ISO 8601 rozpoczyna się w poniedziałek pierwszego tygodnia i kończy w niedzielę ostatniego tygodnia.

Przykład:

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

Wynik:

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

Ten wynik jest inny niż w przypadku użycia $week operatora.

Oto przykład, który pokazuje różnicę.

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

Wynik:

{ "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. Uzyskiwanie wyniku $grupy z liczbą grup

  2. Pobierz pozycję wybranego dokumentu w kolekcji [mongoDB]

  3. Jak mogę skonfigurować MongoDB na serwerze Node.js przy użyciu node-mongodb-native w środowisku EC2?

  4. Dlaczego mój schemat nie dodaje wartości domyślnych w tablicach mangusty?

  5. Ciąg projektu agregacji MongoDB do ObjectId