MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongoose:Jak pobrać statystyki danych z ostatnich 7 dni z DB?

Opisywane zapytanie grupuje serię dokumentów według dnia, gdy dokumenty te zawierają datę i godzinę UTC.

MongoDB wewnętrznie przechowuje daty/czasy jako liczbę milisekund od 1 stycznia 1970 r., więc pierwszym krokiem będzie obliczenie początku dnia dla każdego dokumentu, a następnie pogrupowanie według tej wartości początku dnia.

Jeśli używasz MongoDB 5.0, możesz użyć $dateTrunc operator:

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

W przypadku starszych wersji można albo obliczyć obiekt daty, który reprezentuje początek dnia, albo zbudować ciąg zawierający tylko datę.

Dla opcji ciągu:

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

Ogólnie rzecz biorąc, potok agregacji będzie wyglądał następująco:

  • $dopasuj, aby wybrać dokumenty w żądanym przedziale czasowym
  • $projekt do obliczania początku dnia dla każdego dokumentu
  • $grupuj według początku dnia, licząc liczbę wystąpień
  • dalsze etapy konwersji dokumentu do pożądanego formatu


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Porównaj 2 pola dokumentu w MongoDB

  2. połączenie z mongoDB

  3. Mongodb sumuje rozmiar pól tablicy

  4. agregacja mongodb, aby uzyskać długość pierwszej zagnieżdżonej tablicy/listy

  5. Lokalizacja bazy danych mongodb na mac