sql >> Databáze >  >> NoSQL >> MongoDB

Mongoose:Jak získat statistiku nahraných dat za posledních 7 dní z DB?

Dotaz, který popisujete, seskupuje řadu dokumentů podle dne, pokud tyto dokumenty obsahují datum a čas UTC.

MongoDB interně ukládá data/časy jako počet milisekund od 1. ledna 1970, takže prvním krokem bude třeba vypočítat začátek dne pro každý dokument a poté seskupit podle této hodnoty začátku dne.

Pokud používáte MongoDB 5.0, můžete použít $dateTrunc operátor:

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

U starších verzí můžete buď vypočítat objekt data, který představuje začátek dne, nebo vytvořit řetězec obsahující pouze datum.

Pro možnost řetězce:

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

Celkově by tedy agregační kanál byl:

  • $match pro výběr dokumentů v požadovaném časovém rámci
  • $project pro výpočet začátku dne pro každý dokument
  • $skupina na začátku dne, počítá se počet výskytů
  • další fáze převodu dokumentu do požadovaného formátu


  1. Spring Data MongoDB:Převod BigInteger na ObjectId

  2. Mongodb se nemůže připojit k localhost, ale může se připojit k IP adrese localhost

  3. mongoose agregát pomocí $exists in $cond

  4. Přístup k dockerizovanému redis z hostitele systému Windows