MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

3 façons d'obtenir la semaine à partir d'une date dans MongoDB

MongoDB fournit diverses options pour extraire des parties de date à partir d'une date.

Cet article présente 3 façons de renvoyer la partie semaine d'une date dans MongoDB.

Exemple de données

Supposons que nous ayons une collection appelée cats avec les documents suivants :

{ "_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") }

Les exemples suivants illustrent diverses options pour renvoyer la partie semaine à partir de born champ de ces documents.

La $week Opérateur

La $week l'opérateur renvoie la semaine de l'année pour une date sous la forme d'un nombre compris entre 0 et 53.

On peut donc lancer le code suivant pour retourner la semaine à partir du born champ dans le document ci-dessus.

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthWeek: { $week: "$born" }
        }
    }
  ]
)

Résultat :

{ "birthWeek" : 1 }
{ "birthWeek" : 49 }
{ "birthWeek" : 38 }

Vous pouvez également spécifier le fuseau horaire lorsque vous utilisez le $week opérateur.

Voir MongoDB $week pour plus d'informations et d'exemples.

Le $dateToString Opérateur

Le $dateToString L'opérateur convertit un objet date en une chaîne selon un format spécifié par l'utilisateur. L'utilisateur peut donc spécifier que seule la partie semaine est renvoyée si nécessaire.

Il existe des spécificateurs de format pour chaque partie de date. En ce qui concerne la partie semaine de la date, le %U le spécificateur de format renvoie la semaine de l'année et le %V le spécificateur de format renvoie la semaine de l'année au format ISO 8601.

Exemple :

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          birthWeek: { $dateToString: { format: "%U", date: "$born" } },
          birthWeekISO: { $dateToString: { format: "%V", date: "$born" } }
       }
     }
   ]
)

Résultat :

{ "birthWeek" : "01", "birthWeekISO" : "53" }
{ "birthWeek" : "49", "birthWeekISO" : "49" }
{ "birthWeek" : "38", "birthWeekISO" : "39" }

Voir MongoDB $dateToString pour plus d'informations et d'exemples.

Voir aussi MongoDB $dateToString Spécificateurs de format pour une liste de spécificateurs de format pouvant être utilisés avec cet opérateur.

La $isoWeek Opérateur

Si vous devez renvoyer la semaine au format ISO 8601, utilisez $isoWeek . L'année ISO 8601 commence par le lundi de la semaine 1 et se termine par le dimanche de la dernière semaine.

Exemple :

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthIsoWeek: { $isoWeek: "$born" }
        }
    }
  ]
)

Résultat :

{ "birthIsoWeek" : 53 }
{ "birthIsoWeek" : 49 }
{ "birthIsoWeek" : 39 }

Ce résultat est différent lorsque nous avons utilisé le $week opérateur.

Voici un exemple qui montre la différence.

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthWeek: { $week: "$born" },
          birthIsoWeek: { $isoWeek: "$born" }
        }
    }
  ]
)

Résultat :

{ "birthWeek" : 1, "birthIsoWeek" : 53 }
{ "birthWeek" : 49, "birthIsoWeek" : 49 }
{ "birthWeek" : 38, "birthIsoWeek" : 39 }