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

Mongoose :Comment obtenir les statistiques de données de téléchargement des 7 derniers jours à partir de la base de données ?

La requête que vous décrivez regroupe une série de documents par jour, lorsque ces documents contiennent une date et une heure UTC.

MongoDB stocke en interne les dates/heures sous forme de nombre de millisecondes depuis le 1er janvier 1970, donc la première étape devra calculer le début de journée pour chaque document, puis regrouper par cette valeur de début de journée.

Si vous utilisez MongoDB 5.0, vous pouvez utiliser le $dateTrunc opérateur :

{$dateTrunc:{date:"$createdAt",unit:"day",timezone:"America/New_York"}}

Pour les anciennes versions, vous pouvez soit calculer l'objet date qui représente le début de la journée, soit créer une chaîne contenant uniquement la date.

Pour l'option chaîne :

{$concat: [
   {$toString:{$year:{ date:"$createdAt", timezone:"America/New_York" }}},
   "-",
   {$toString:{$month:{ date:"$createdAt", timezone:"America/New_York" }}},
   "-",
   {$toString:{$dayOfMonth:{ date:"$createdAt", timezone:"America/New_York" }}},
]}

Ainsi, dans l'ensemble, le pipeline d'agrégation serait :

  • $match pour sélectionner des documents dans le délai souhaité
  • $project pour calculer le début de journée pour chaque document
  • $grouper par début de journée, en comptant le nombre d'occurrences
  • étapes ultérieures pour convertir le document au format souhaité