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 }