sql >> Database teknologi >  >> NoSQL >> MongoDB

Hukommelsesoverløbsfejl ved brug af aggregerede og $group-forespørgsler

Nogle ideer:

Du behøver ikke det første $project fase i forespørgslen. Og du kan inkludere { "$toDate": "$originaltimestamp" } i $group stadiets _id , som nedenfor:

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

Om $push: "$$ROOT" - i stedet for $$ROOT , indfang kun de felter, du har mest brug for (eller vigtige). Dette er for at reducere hukommelsesforbruget. For eksempel:

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

Endelig kan du overveje at begrænse forespørgslen til et sæt datoer ad gangen. Dette vil kræve at køre forespørgslen mere end én gang for forskellige datoer - men jeg tror, ​​det kan klare sig bedre samlet set. For eksempel en måned ad gangen, der matcher month Mark. Og denne month kan indekseres for ydeevne. Dette kræver at inkludere en $match trin i begyndelsen (det første trin) af forespørgslen, for eksempel:

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

Og dette vil forespørge data for januar måned 2020.




  1. mongo.so:> udefineret symbol:php_json_encode i Ukendt på linje 0. Efter installation mongo driver til php

  2. Sådan sender du flere dokumenter ved hjælp af RMongo

  3. Redis, sessionsudløb og omvendt opslag

  4. Redis Python - hvordan man sletter alle nøgler i henhold til et specifikt mønster I python, uden at python itererer