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.