sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose:Hur får man de senaste 7 dagarnas uppladdningsdatastatistik från DB?

Frågan du beskriver är att gruppera en serie dokument efter dag, när dessa dokument innehåller UTC datum och tid.

MongoDB lagrar internt datum/tider som antalet millisekunder sedan 1 januari 1970, så det första steget måste vara att beräkna början på dagen för varje dokument och sedan gruppera efter detta startvärde.

Om du använder MongoDB 5.0 kan du använda $dateTrunc operatör:

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

För äldre versioner kan du antingen beräkna datumobjektet som representerar dagens början eller bygga en sträng som bara innehåller datumet.

För strängalternativet:

{$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å totalt sett skulle aggregeringspipelinen vara:

  • $match för att välja dokument inom önskad tidsram
  • $project för att beräkna början på dagen för varje dokument
  • $group vid början av dagen, räknar antalet förekomster
  • ytterligare steg för att konvertera dokumentet till önskat format


  1. Spring Data - MongoDB indexering DBRef

  2. Mongoose - hitta underdokument efter kriterier

  3. Spark HBase Connector – ett år i översyn

  4. MongoDB Scala - fråga dokument för ett specifikt fältvärde