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

Agregacja MongoDb Grupuj według daty

db.foos.aggregate(
    [   
        {   $project : { day : {$substr: ["$TimeStamp", 0, 10] }}},        
        {   $group   : { _id : "$day",  number : { $sum : 1 }}},
        {   $sort    : { _id : 1 }}        
    ]
)

Grupowanie według daty można wykonać w dwóch krokach w ramach agregacji, dodatkowy trzeci krok jest potrzebny do sortowania wyniku, jeśli sortowanie jest pożądane:

  1. $project w połączeniu z $substr pobiera pierwszych 10 znaków (RRRR:MM:DD) obiektu ISODate z każdego dokumentu (wynikiem jest zbiór dokumentów z polami „_id” i „day”);
  2. $group grupuje według dnia, dodając (podsumowując) numer 1 dla każdego pasującego dokumentu;
  3. $sort rosnąco według „_id”, który jest dniem z poprzedniego kroku agregacji — jest to opcjonalne, jeśli pożądany jest posortowany wynik.

To rozwiązanie nie może korzystać z indeksów takich jak db.twitter.ensureIndex( { TimeStamp: 1 } ) , ponieważ w locie przekształca obiekt ISODate w obiekt tekstowy. W przypadku dużych zbiorów (miliony dokumentów) może to stanowić wąskie gardło wydajności i należy stosować bardziej wyrafinowane podejścia.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pobieraj z wielu oddzielnych kolekcji za pomocą Express i MongoDB

  2. Kolejność zdarzeń webhooków w paski

  3. transakcja wielu dokumentów nie działa w c# przy użyciu serwera społeczności mongodb 4.08

  4. Struktura MongoDB dla aplikacji wiadomości

  5. Wykonywanie złączeń w mongodb z trzema kolekcjami?