sql >> Base de Datos >  >> NoSQL >> MongoDB

Error de desbordamiento de memoria al usar consultas agregadas y $group

Algunas ideas:

No necesitas el primer $project etapa en la consulta. Y puede incluir el { "$toDate": "$originaltimestamp" } dentro del $group _id de la etapa , como se muestra a continuación:

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

Acerca del $push: "$$ROOT" - en lugar de $$ROOT , captura solo los campos que más necesitas (o importantes). Esto es para reducir el uso de la memoria. Por ejemplo:

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

Finalmente, puede pensar en restringir la consulta para un conjunto de fechas a la vez. Esto requerirá ejecutar la consulta más de una vez para diferentes rangos de fechas, pero creo que puede funcionar mejor en general. Por ejemplo, un mes a la vez que coincida con el month campo. Y, este month se puede indexar para el rendimiento. Esto requerirá incluir un $match etapa al principio (la primera etapa) de la consulta, por ejemplo:

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

Y, esto consultará los datos del mes de enero de 2020.