Docs Menu
Docs Home
/
MongoDBマニュアル
/

Map-Reduce

項目一覧

  • Map-Reduce JavaScript 関数
  • Map-Reduce の結果
  • シャーディングされたコレクション
  • ビュー

注意

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

MongoDB 5.0以降、 map-reduceは非推奨です。

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

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

Map-reduceは、大量のデータを有用な集計結果に凝縮するためのデータ処理パラダイムです。map-reduce 操作を実行するために、MongoDB はmapReduceデータベースコマンドを提供します。

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

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

この map-reduce 操作では、MongoDB は各入力ドキュメント(つまり、クエリ条件にマッチするコレクション内のドキュメント)に map フェーズを適用します。map 関数は、キーと値のペアを出力します。複数の値を持つキーに対して、MongoDB は集計データを収集して圧縮する reduce フェーズを適用します。その後、MongoDB により結果がコレクションに格納されます。オプションとして、reduce 関数の出力を finalize 関数に渡して、集計の結果をさらに圧縮または処理することもできます。

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

注意

map-reduce は、MongoDB Atlas の無料クラスターと MongoDB Atlas サーバーレスインスタンスではサポートされていません。

MongoDB では、 map-reduce 操作はカスタム JavaScript 関数を使用して値をキーにマッピングする、または関連付けます。キーに複数の値がマップされている場合、この操作ではキーの値を 1 つのオブジェクトに減らします

カスタム JavaScript 関数を使用すると、map-reduce 操作を柔軟に行うことができます。たとえば、ドキュメントを処理する場合、map 関数は複数のキーと値のマッピングを作成することも、作成しないこともできます。map-reduce 操作では、カスタム JavaScript 関数を使用して、マッピングや削減操作の最後に結果に対して追加の計算をするなど、最後の変更を行うこともできます。

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

map-reduce 操作の結果をインラインで返す場合、結果ドキュメントはBSON ドキュメント サイズの制限(現在は 16 MB)内に収まっている必要があります。map-reduce 操作の制限と制約に関する追加情報については、 mapReduce リファレンス ページを参照してください。

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

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

戻る

SQL から集計へ