sql >> Databasteknik >  >> NoSQL >> MongoDB

Minnesspillfel vid användning av aggregerade och $group-frågor

Några idéer:

Du behöver inte det första $project steg i frågan. Och du kan inkludera { "$toDate": "$originaltimestamp" } inom $group stegets _id , enligt nedan:

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

Om $push: "$$ROOT" - istället för $$ROOT , fånga bara de fält du behöver mest (eller viktigast). Detta för att minska minnesanvändningen. Till exempel:

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

Slutligen kan du tänka på att begränsa frågan för en uppsättning datum i taget. Detta kommer att kräva att du kör frågan mer än en gång för olika datumintervall - men jag tror att det kan bli bättre totalt sett. Till exempel en månad i taget som matchar month fält. Och den här month kan indexeras för prestanda. Detta kommer att kräva att inkludera en $match steg i början (det första steget) av frågan, till exempel:

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

Och detta kommer att fråga efter data för januari månad 2020.




  1. mongod:fel vid laddning av delade bibliotek:libssl.so.10 libcrypto.so.10

  2. MongoDB-skal:hur man söker efter samlingar som matchar ett namn eller regex

  3. Migrera MongoDB till DynamoDB, del 2

  4. Uppdatera rollanvändare:inte behörig på admin att utföra kommandot