現在 Mongo の Map/Reduce フレームワークを使用しているプロセスがありますが、あまりうまく機能していません。これは非常に単純な集計で、3 つのフィールドをバケット化し、4 つの異なるフィールドの合計を返し、別の 4 つのフィールド (各バケット内で定数) の値を渡します。
[ MongoDb 2.2、2.4、および 2.6 での Map-Reduce のパフォーマンス] に記載されている理由により、パフォーマンスを向上させるためにこれを集計フレームワークに変換したいと考えていますが、次の 3 つのことが妨げになっていると思います。
- 結果内の 1 つのドキュメントが非常に小さい場合でも、合計結果が大きくなり、Mongo の 16 MB の制限を超える可能性があります。
- 別のコレクションに直接マップ/リデュースできますが、集計フレームワークは結果をインラインでしか返すことができません (だと思いますか?)
- より多くのデータがソース コレクションに到着したときの増分更新の場合、
MapReduceCommand.OutputType
(Java で) を に設定してmap/reduce できますREDUCE
が、ユース ケースと完全に一致しますが、集約フレームワークに対応する機能がありません。
集計フレームワークでこれらを解決する良い方法はありますか? 現在、サーバーのバージョンは 2.4.3 です。新しい機能があれば、必要に応じて更新できます。