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 }