MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

3 modi per ottenere la settimana da una data in MongoDB

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 }