Algumas ideias:
Você não precisa do primeiro
$project estágio na consulta. E você pode incluir o { "$toDate": "$originaltimestamp" } dentro do $group _id do estágio , como abaixo:"_id": {
"$dateToString": {
"format": "%Y-%m-%d", "date": { "$toDate": "$originaltimestamp" }
}
}
Sobre o
$push: "$$ROOT" - em vez do $$ROOT , capture apenas os campos que você mais precisa (ou importante). Isso é para reduzir o uso de memória. Por exemplo:"data": {
$push: {
"subscriber_id": "$subscriber_id",
"type": "$type",
// other required fields...
}
}
Finalmente, você pode pensar em restringir a consulta para um conjunto de datas por vez. Isso exigirá a execução da consulta mais de uma vez para diferentes intervalos de datas - mas acho que pode se sair melhor no geral. Por exemplo, um mês de cada vez correspondendo ao
month campo. E, neste month pode ser indexado para desempenho. Isso exigirá a inclusão de um $match estágio no início (o primeiro estágio) da consulta, por exemplo:{ $match: { month: "202001" } }
E, isso consultará os dados do mês de janeiro de 2020.