MongoDB tillhandahåller olika alternativ för att extrahera datumdelar från ett datum.
Den här artikeln presenterar 3 sätt att returnera veckodelen från ett datum i MongoDB.
Exempeldata
Anta att vi har en samling som heter cats
med följande dokument:
{ "_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") }
Följande exempel visar olika alternativ för att returnera veckodelen från born
fältet för dessa dokument.
$week
Operatör
$week
operatorn returnerar veckan på året för ett datum som ett tal mellan 0 och 53.
Vi kan därför köra följande kod för att returnera veckan från born
fältet i dokumentet ovan.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" }
}
}
]
)
Resultat:
{ "birthWeek" : 1 } { "birthWeek" : 49 } { "birthWeek" : 38 }
Du kan också ange tidszonen när du använder $week
operatör.
Se MongoDB $week
för mer information och exempel.
$dateToString
Operatör
$dateToString
operatorn konverterar ett datumobjekt till en sträng enligt ett användarspecificerat format. Användaren kan därför ange att endast veckodelen returneras om så krävs.
Det finns formatspecifikationer för varje datumdel. När det gäller veckodelen av datumet, %U
formatspecificeraren returnerar veckan på året och %V
format specifier returnerar veckan på året i ISO 8601-format.
Exempel:
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
för mer information och exempel.
Se även MongoDB $dateToString
Formatspecifikationer för en lista över formatspecifikationer som kan användas med den här operatorn.
$isoWeek
Operatör
Om du behöver returnera veckan i ISO 8601-format, använd $isoWeek
. ISO 8601-året börjar med måndagen i vecka 1 och slutar med söndagen i sista veckan.
Exempel:
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Resultat:
{ "birthIsoWeek" : 53 } { "birthIsoWeek" : 49 } { "birthIsoWeek" : 39 }
Detta resultat skiljer sig från när vi använde $week
operatör.
Här är ett exempel som visar skillnaden.
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 }