MongoDB giver forskellige muligheder for at udtrække datodele fra en dato.
Denne artikel præsenterer 3 måder at returnere ugedelen fra en dato i MongoDB.
Eksempel på data
Antag, at vi har en samling kaldet cats
med følgende dokumenter:
{ "_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") }
De følgende eksempler viser forskellige muligheder for at returnere ugedelen fra born
felt af disse dokumenter.
$week
Operatør
$week
operatør returnerer ugen i året for en dato som et tal mellem 0 og 53.
Vi kan derfor køre følgende kode for at returnere ugen fra born
felt i ovenstående dokument.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" }
}
}
]
)
Resultat:
{ "birthWeek" : 1 } { "birthWeek" : 49 } { "birthWeek" : 38 }
Du kan også angive tidszonen, når du bruger $week
operatør.
Se MongoDB $week
for mere information og eksempler.
$dateToString
Operatør
$dateToString
operator konverterer et datoobjekt til en streng i henhold til et brugerspecificeret format. Brugeren kan derfor angive, at kun ugedelen returneres, hvis det kræves.
Der er formatspecifikationer for hver datodel. Med hensyn til ugedelen af datoen, %U
formatspecificator returnerer ugen i året og %V
formatspecificator returnerer ugen i året i ISO 8601-format.
Eksempel:
db.cats.aggregate(
[
{
$project: {
_id: 0,
birthWeek: { $dateToString: { format: "%U", date: "$born" } },
birthWeekISO: { $dateToString: { format: "%V", date: "$born" } }
}
}
]
)
Resultat:
{ "birthWeek" : "01", "birthWeekISO" : "53" } { "birthWeek" : "49", "birthWeekISO" : "49" } { "birthWeek" : "38", "birthWeekISO" : "39" }
Se MongoDB $dateToString
for mere information og eksempler.
Se også MongoDB $dateToString
Formatspecifikationer for en liste over formatspecifikationer, der kan bruges med denne operator.
$isoWeek
Operatør
Hvis du skal returnere ugen i ISO 8601-format, skal du bruge $isoWeek
. ISO 8601-året starter med mandagen i uge 1 og slutter med søndagen i den sidste uge.
Eksempel:
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Resultat:
{ "birthIsoWeek" : 53 } { "birthIsoWeek" : 49 } { "birthIsoWeek" : 39 }
Dette resultat er anderledes end da vi brugte $week
operatør.
Her er et eksempel, der viser forskellen.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" },
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Resultat:
{ "birthWeek" : 1, "birthIsoWeek" : 53 } { "birthWeek" : 49, "birthIsoWeek" : 49 } { "birthWeek" : 38, "birthIsoWeek" : 39 }