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

Mongoose:Hvordan får man de seneste 7 dages uploaddatastatistik fra DB?

Den forespørgsel, du beskriver, grupperer en række dokumenter efter dag, når disse dokumenter indeholder UTC-dato/klokkeslæt.

MongoDB gemmer internt datoer/klokkeslæt som antallet af millisekunder siden 1. januar 1970, så det første trin skal være at beregne starten på dagen for hvert dokument og derefter gruppere efter denne start på dagen værdi.

Hvis du bruger MongoDB 5.0, kan du bruge $dateTrunc operatør:

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

For ældre versioner kan du enten beregne datoobjektet, der repræsenterer starten på dagen, eller bygge en streng, der kun indeholder datoen.

For strengindstillingen:

{$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" }}},
]}

Så samlet set ville aggregeringspipelinen være:

  • $match for at vælge dokumenter inden for den ønskede tidsramme
  • $project til at beregne starten på dagen for hvert dokument
  • $group ved starten af ​​dagen, der tæller antallet af forekomster
  • yderligere trin for at konvertere dokumentet til det ønskede format


  1. Introduktion til HDFS Federation &Architecture

  2. mongoexport uden _id felt

  3. Mongoose med unik boolean af ægte

  4. MongoDB kortlægge/reducere over flere samlinger?