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

Błąd przepełnienia pamięci podczas używania zapytań agregujących i $group

Kilka pomysłów:

Nie potrzebujesz pierwszego $project etap zapytania. Możesz też dołączyć { "$toDate": "$originaltimestamp" } w ramach $group _id etapu , jak poniżej:

"_id": { 
    "$dateToString": { 
        "format": "%Y-%m-%d", "date": { "$toDate": "$originaltimestamp" } 
    } 
}

Informacje o $push: "$$ROOT" - zamiast $$ROOT , przechwytuj tylko te pola, których potrzebujesz najbardziej (lub ważne). Ma to na celu zmniejszenie zużycia pamięci. Na przykład:

"data": { 
    $push: { 
        "subscriber_id": "$subscriber_id",
        "type": "$type",
        // other required fields...
    } 
}

Na koniec możesz pomyśleć o ograniczeniu zapytania do zestawu dat w czasie. Będzie to wymagało wielokrotnego uruchomienia zapytania dla różnych zakresów dat — ale myślę, że ogólnie rzecz biorąc, może być lepiej. Na przykład miesiąc na raz pasujący do month pole. I ten month mogą być indeksowane pod kątem wydajności. Będzie to wymagało uwzględnienia $match etap na początku (pierwszy etap) zapytania, na przykład:

{ $match: { month: "202001" } }

Spowoduje to zapytanie o dane za styczeń 2020 r.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose — zwiększanie wartości w tablicy obiektów

  2. Relacja Loopback ma wiele nie działa na mongodb

  3. Czy możesz określić klucz dla $addToSet w Mongo?

  4. Wydajność MongoDB - posiadanie wielu baz danych

  5. Kolekcja Meteorów słusznie obserwuje zmiany