2012-11-28 15 views
5

実際にはmap reduceを使用して計算を行います。 私は計算のための利用可能なパイプライン演算子がないので、集約フレームワークでそれを行うことはできません。MongoDB集約フレームワークを使用したカスタムパイプライン演算子

カスタムパイプライン演算子を記述できますか?事前

+0

あなたは追加の事業者のどのような必要ですか? – Stennie

+0

stddev、median、conditionnal操作が主に – hotips

答えて

8

おかげで答えが "可能" のあなたの定義に依存します:

1)箱のうち:NO。

MongoDB 2.2では、新しいパイプライン演算子を追加できるエンドユーザ機能はありません。 Aggregation Frameworkとパイプライン演算子は、MapReduce(JavaScriptで実装されています)などの以前の集約オプションよりもパフォーマンスと並行性を向上させるために、C++で実装されています。

2)C++で書き込みたい場合:YES(ただし、簡単なことではありません)。

MongoDBはオープンソースプロジェクトなので、C++コードに乗り込んで追加機能を実装することができます(src/mongo/db/pipeline参照)。 Contributing to the MongoDB projectに関するガイドラインがあり、進行中の開発は非常に活発であることに注意してください。

カスタム関数を書きたい場合は、現時点で最良の選択肢はMapReduceを使用し続けることです。

上記のオプションに関係なく、表示するパイプライン演算子または機能がある場合は、MongoDB Jira SERVER project(コンポーネント:Aggregation Framework)で提案してください。これにより、他の人が機能要求のコメント、監視、投票を行うことができます。機能の実装が終わったら、プルリクエストでJira機能の説明を参照できます。新しい機能リクエストを送信する前に、この機能にalready been suggestedが含まれているかどうかを検索する必要があります。

例えば、既に存在しているよう要求します。

+0

公式ビルドでカスタムパイプラインアグリゲータを使用する予定があるかどうか知っていますか?ありがとう! – hotips

+0

集約フレームワークはC++で拡張性とパフォーマンスが向上するように設計されているため、ユーザー定義のパイプライン演算子はほとんど見当たりません。 Jiraで機能要求に投票した場合、これらは将来のリリースの計画に考慮されます。 Map/Reduceを使用すると、データ集約/操作に使用できる完全なJavaScriptインタープリタを作成できますが、効率とパフォーマンスのトレードオフがあります。 MongoDB集約オプションの比較については、[group()、$ groupおよびMapReduce](http://stackoverflow.com/questions/12337319)を参照してください。 – Stennie