MongoDB fornisce varie opzioni per estrarre parti di data da una data.
Questo articolo presenta 3 modi per restituire la parte della settimana da una data in MongoDB.
Dati di esempio
Supponiamo di avere una collezione chiamata cats
con i seguenti documenti:
{ "_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") }
Gli esempi seguenti mostrano varie opzioni per restituire la porzione settimanale dal born
campo di quei documenti.
Il $week
Operatore
La $week
l'operatore restituisce la settimana dell'anno per una data come un numero compreso tra 0 e 53.
Possiamo quindi eseguire il codice seguente per restituire la settimana dal born
campo nel documento sopra.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" }
}
}
]
)
Risultato:
{ "birthWeek" : 1 } { "birthWeek" : 49 } { "birthWeek" : 38 }
Puoi anche specificare il fuso orario quando usi il $week
operatore.
Vedi MongoDB $week
per ulteriori informazioni ed esempi.
Il $dateToString
Operatore
Il $dateToString
operatore converte un oggetto data in una stringa in base a un formato specificato dall'utente. L'utente può quindi specificare che venga restituita solo la porzione settimanale, se richiesta.
Sono disponibili identificatori di formato per ciascuna parte della data. Per quanto riguarda la parte settimanale della data, il %U
l'identificatore di formato restituisce la settimana dell'anno e il %V
l'identificatore di formato restituisce la settimana dell'anno in formato ISO 8601.
Esempio:
db.cats.aggregate(
[
{
$project: {
_id: 0,
birthWeek: { $dateToString: { format: "%U", date: "$born" } },
birthWeekISO: { $dateToString: { format: "%V", date: "$born" } }
}
}
]
)
Risultato:
{ "birthWeek" : "01", "birthWeekISO" : "53" } { "birthWeek" : "49", "birthWeekISO" : "49" } { "birthWeek" : "38", "birthWeekISO" : "39" }
Vedi MongoDB $dateToString
per ulteriori informazioni ed esempi.
Vedi anche MongoDB $dateToString
Identificatori di formato per un elenco di identificatori di formato che possono essere utilizzati con questo operatore.
Il $isoWeek
Operatore
Se devi restituire la settimana nel formato ISO 8601, usa $isoWeek
. L'anno ISO 8601 inizia con il lunedì della settimana 1 e termina con la domenica dell'ultima settimana.
Esempio:
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Risultato:
{ "birthIsoWeek" : 53 } { "birthIsoWeek" : 49 } { "birthIsoWeek" : 39 }
Questo risultato è diverso da quando abbiamo usato $week
operatore.
Ecco un esempio che mostra la differenza.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" },
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Risultato:
{ "birthWeek" : 1, "birthIsoWeek" : 53 } { "birthWeek" : 49, "birthIsoWeek" : 49 } { "birthWeek" : 38, "birthIsoWeek" : 39 }