Docs Menu
Docs Home
/ /

Map-Reduce

注意

代替手段としての集計パイプライン

MongoDB 5 . 0以降、 map-reduce は非推奨になりました。

map-reduce を集計パイプラインに置き換える例については、以下を参照してください。

MongoDB Atlas でホストされている配置の UI で集計パイプラインを実行できます。

map-reduce は、大量のデータを集約結果に凝縮するためのデータ プロセシング パラダイムです。map-reduce 操作を実行するため、MongoDB はmapReduceデータベースコマンドを提供しています。

次の map-reduce 操作について考えてみます。

注釈付きの map-reduce 操作の図。

MongoDB は、各入力ドキュメント(クエリ条件にマッチするコレクション内のドキュメント)に map フェーズを適用します。map 関数はキーと値のペアを出力します。複数の値を持つキーに対して、MongoDB はデータを収集して圧縮する reduce フェーズを適用し、その結果をコレクションに保存します。reduce 関数の出力は、必要に応じて finalize 関数を通して、結果をさらに処理できます。

MongoDB のすべての map-reduce 関数は JavaScript であり、mongod プロセス内で実行されます。map-reduce 操作は単一のコレクションを入力として受け取り、マップ ステージの前に並べ替えと制限を適用できます。mapReduce は結果をドキュメントとして返すことができます。またはコレクションに書き込むこともできます。

注意

map-reduce は、 MongoDB Atlas無料および Flex クラスターではサポートされていません。

map-reduce 操作では、カスタム JavaScript 関数を使用して値をキーにマップします。キーに複数の値がある場合、操作ではそれらを 1 つのオブジェクトに減らします。map 関数は複数のキーと値のペアを出力することも、出力しないこともできます。任意の finalize 関数では、結果にさらに変更を加えることができます。

map-reduce 操作では、結果をコレクションに書き込むか、インラインで返すことができます。結果をコレクションに書き込む場合は、同じ入力コレクションに対して後続の map-reduce 操作を実行して、新しい結果を以前の結果と置換、マージ、または削減することができます。例については、「mapReduce」と「増分型 map-reduce の実行」を参照してください。

結果を インライン で返す場合、結果ドキュメントは BSON ドキュメント サイズの制限(16 メビバイト)内に収まっている必要があります。その他の制限と制約については、mapReduceを参照してください。

MongoDB は、シャーディングされたコレクションのmap-reduce 操作をサポートしています。

ビューでは map-reduce 操作をサポートしていません。

戻る

SQL から集計へ

項目一覧