いくつかのアイデア:
最初の$project
は必要ありません クエリのステージ。また、{ "$toDate": "$originaltimestamp" }
を含めることができます $group
内 ステージの_id
、以下のように:
"_id": {
"$dateToString": {
"format": "%Y-%m-%d", "date": { "$toDate": "$originaltimestamp" }
}
}
$push: "$$ROOT"
について -$$ROOT
の代わりに 、最も必要な(または重要な)フィールドのみをキャプチャします。これは、メモリ使用量を減らすためです。例:
"data": {
$push: {
"subscriber_id": "$subscriber_id",
"type": "$type",
// other required fields...
}
}
最後に、ある時点で一連の日付のクエリを制限することを検討できます。これには、さまざまな日付範囲に対してクエリを複数回実行する必要がありますが、全体的にはうまくいくと思います。たとえば、month
に一致する月 分野。そして、このmonth
パフォーマンスのためにインデックスを付けることができます。これには、$match
を含める必要があります クエリの最初の段階(最初の段階)、例:
{ $match: { month: "202001" } }
そして、これは2020年1月のデータをクエリします。