sql >> Databáze >  >> NoSQL >> MongoDB

Chyba přetečení paměti při použití agregačních a $skupinových dotazů

Některé nápady:

Nepotřebujete první $project fázi v dotazu. A můžete zahrnout { "$toDate": "$originaltimestamp" } v rámci $group _id fáze , jak je uvedeno níže:

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

O $push: "$$ROOT" - namísto $$ROOT , zachyťte pouze pole, která potřebujete nejvíce (nebo důležitá). Je to kvůli snížení využití paměti. Například:

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

Nakonec můžete uvažovat o omezení dotazu na sadu dat v čase. To bude vyžadovat spuštění dotazu více než jednou pro různé rozsahy dat - ale myslím, že to může být celkově lepší. Například měsíc v čase odpovídající month pole. A tento month lze indexovat podle výkonu. To bude vyžadovat zahrnutí $match fáze na začátku (první fáze) dotazu, například:

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

A toto bude dotazovat data za měsíc leden 2020.




  1. 'toto' není definováno v háku před uložením Mongoose

  2. v Reactu volám dva seznamy na stránku z mongo a chci kliknout na jeden, abych filtroval to, co je zobrazeno v ostatních

  3. Konfigurace reverzního proxy serveru Apache pro hostování serveru Laravel Echo na produkci

  4. Mongoose s ReplicaSet na Atlasu