sql >> Database >  >> NoSQL >> MongoDB

Mongoose:hoe kan ik de afgelopen 7 dagen gegevensstatistieken van DB uploaden?

De query die u beschrijft, groepeert een reeks documenten per dag, wanneer die documenten UTC datetime bevatten.

MongoDB slaat intern datums/tijden op als het aantal milliseconden sinds 1 januari 1970, dus de eerste stap is het berekenen van het begin van de dag voor elk document en vervolgens groeperen op die beginwaarde.

Als u MongoDB 5.0 gebruikt, kunt u de $dateTrunc gebruiken operator:

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

Voor oudere versies kunt u het datumobject berekenen dat het begin van de dag vertegenwoordigt of een tekenreeks maken die alleen de datum bevat.

Voor de string-optie:

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

Dus over het algemeen zou de aggregatiepijplijn zijn:

  • $match om documenten in het gewenste tijdsbestek te selecteren
  • $project om het begin van de dag voor elk document te berekenen
  • $groepeer aan het begin van de dag, tel het aantal keren
  • verdere stappen om het document naar het gewenste formaat te converteren


  1. Hoe het gebruikte_geheugen in Redis van brandstof te voorzien?

  2. Wat is het verschil tussen opslaan en invoegen in Mongo DB?

  3. Ik heb een mongodb-query en ik wil het exacte woord 'Goedgekeurd' vinden

  4. Mongo:show dbs laat de test db niet zien. Waarom?