Nogle ideer:
Du behøver ikke det første $project
fase i forespørgslen. Og du kan inkludere { "$toDate": "$originaltimestamp" }
i $group
stadiets _id
, som nedenfor:
"_id": {
"$dateToString": {
"format": "%Y-%m-%d", "date": { "$toDate": "$originaltimestamp" }
}
}
Om $push: "$$ROOT"
- i stedet for $$ROOT
, indfang kun de felter, du har mest brug for (eller vigtige). Dette er for at reducere hukommelsesforbruget. For eksempel:
"data": {
$push: {
"subscriber_id": "$subscriber_id",
"type": "$type",
// other required fields...
}
}
Endelig kan du overveje at begrænse forespørgslen til et sæt datoer ad gangen. Dette vil kræve at køre forespørgslen mere end én gang for forskellige datoer - men jeg tror, det kan klare sig bedre samlet set. For eksempel en måned ad gangen, der matcher month
Mark. Og denne month
kan indekseres for ydeevne. Dette kræver at inkludere en $match
trin i begyndelsen (det første trin) af forespørgslen, for eksempel:
{ $match: { month: "202001" } }
Og dette vil forespørge data for januar måned 2020.