MongoDB poskytuje různé možnosti pro extrahování částí data z data.
Tento článek představuje 3 způsoby, jak vrátit část týdne z data v MongoDB.
Ukázková data
Předpokládejme, že máme sbírku nazvanou cats
s následujícími dokumenty:
{ "_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") }
Následující příklady ukazují různé možnosti pro vrácení části týdne z born
pole těchto dokumentů.
$week
Operátor
$week
operátor vrátí týden v roce pro datum jako číslo mezi 0 a 53.
Můžeme tedy spustit následující kód, abychom vrátili týden od born
pole ve výše uvedeném dokumentu.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" }
}
}
]
)
Výsledek:
{ "birthWeek" : 1 } { "birthWeek" : 49 } { "birthWeek" : 38 }
Při použití $week
můžete také určit časové pásmo operátor.
Viz MongoDB $week
pro další informace a příklady.
$dateToString
Operátor
$dateToString
operátor převede objekt data na řetězec podle uživatelem zadaného formátu. Uživatel tedy může určit, že v případě potřeby se vrátí pouze týdenní část.
Pro každou část data existují specifikátory formátu. Pokud jde o týdenní část data, %U
specifikátor formátu vrací týden v roce a %V
format specifier vrací týden v roce ve formátu ISO 8601.
Příklad:
db.cats.aggregate(
[
{
$project: {
_id: 0,
birthWeek: { $dateToString: { format: "%U", date: "$born" } },
birthWeekISO: { $dateToString: { format: "%V", date: "$born" } }
}
}
]
)
Výsledek:
{ "birthWeek" : "01", "birthWeekISO" : "53" } { "birthWeek" : "49", "birthWeekISO" : "49" } { "birthWeek" : "38", "birthWeekISO" : "39" }
Viz MongoDB $dateToString
pro další informace a příklady.
Viz také MongoDB $dateToString
Specifikátory formátu pro seznam specifikátorů formátu, které lze použít s tímto operátorem.
$isoWeek
Operátor
Pokud potřebujete vrátit týden ve formátu ISO 8601, použijte $isoWeek
. Rok ISO 8601 začíná pondělím týdne 1 a končí nedělí posledního týdne.
Příklad:
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Výsledek:
{ "birthIsoWeek" : 53 } { "birthIsoWeek" : 49 } { "birthIsoWeek" : 39 }
Tento výsledek je jiný, než když jsme použili $week
operátor.
Zde je příklad, který ukazuje rozdíl.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" },
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Výsledek:
{ "birthWeek" : 1, "birthIsoWeek" : 53 } { "birthWeek" : 49, "birthIsoWeek" : 49 } { "birthWeek" : 38, "birthIsoWeek" : 39 }