スケジューラーで実行され、いくつかのカウントを集計するいくつかの map-reduce ジョブがあります。これらをリアルタイムの集計呼び出しに切り替えたいと考えています。問題は、map-reduce の無限の柔軟性のすべてが、実行対象のコレクションに対して 4 つの異なるカウントを集計していることです。次のようなもの:
var result =
{
MessageId: this.MessageId,
Date: this.Created,
Queued : (this.Status == 0 ? 1 : 0),
Sent : (this.Status == 1 ? 1 : 0),
Failed : (this.Status == 2 ? 1 : 0),
Total : 1,
Unsubscribes: 0
};
SQL を使用していた場合、SUM ごとに異なるフィルターが必要なため、単一の GROUP BY/SUM ではこれを実行できないと思います。mongo で可能ですか、または異なる $match 句で 4 つの個別の $group ステートメントを実行する必要がありますか?