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

map-reduce コレクションとシャーディングされたコレクション

項目一覧

  • 入力としてのシャーディングされたコレクション
  • 出力としてのシャーディングされたコレクション

注意

map-reduce の代替としての集計パイプライン

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

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

map-reduce は、シャーディングされたコレクションに対して入力と出力の両方で操作をサポートします。 このセクションでは、シャーディングされたコレクションに固有のmapReduceの動作について説明します。

シャーディングされたコレクションを map-reduce 操作の入力として使用する場合、 mongosは map-reduce ジョブを並列に各シャードに自動的にディスパッチします。 特別なオプションは必要ありません。 mongosはすべてのシャードのジョブが完了するのを待機します。

mapReduceoutフィールドにsharded値がある場合、MongoDB は_idフィールドをシャードキーとして使用し、出力コレクションをシャーディングします。

シャーディングされたコレクションに出力するには、

  • 出力コレクションが存在しない場合は、まずシャーディングされたコレクションを作成します。

  • 出力コレクションがすでに存在するがシャーディングされていない場合、map-reduce は失敗します。

  • 新しい、または空のシャーディングされたコレクションの場合、MongoDB は map-reduce 操作の最初のステージの結果を使用して、シャード間で分散された初期チャンクを作成します。

  • mongos は、map-reduce 後処理ジョブを並行して、チャンクを所有するすべてのシャードにディスパッチします。 後処理中に、各シャードは自分のチャンクの結果を他のシャードからプルし、最後の reduce/ finalize を実行し、 出力コレクションにローカルに書込みます。

注意

  • 後の map-reduce ジョブ中に、MongoDB は必要に応じてチャンクを分割します。

  • 出力コレクションの チャンク のバランシングは、同時実行性の問題を回避するために、後処理中に自動的に阻止されます。

戻る

Map-Reduce