map-reduce の同時実行
注意
map-reduce の代替としての集計パイプライン
MongoDB 5.0以降、 map-reduceは非推奨です。
map-reduceの代わりに、集計パイプラインを使用する必要があります。 集計パイプラインは、map-reduce よりもパフォーマンスとユーザビリティが優れています。
$group
$merge
などの集約パイプライン ステージ を使用して、map-reduce操作を書き換えることができます。カスタム機能を必要とする map-reduce 操作には、
$accumulator
と$function
の集計演算子を使用できます。 これらの演算子を使用して、JavaScript でカスタム集計式を定義できます。
map-reduce を集計パイプラインに置き換える例については、以下を参照してください。
map-reduce 操作は、入力コレクションからの読み取り、 map
関数の実行、 reduce
関数の実行、処理中の一時コレクションへの書込み、出力コレクションへの書込みなど、多くのタスクで構成されています。
操作中、map-reduce は次のロックを取得します。
読み取りフェーズでは読み取りロックが取得されます。 100 ドキュメントごとに生成されます。
一時コレクションへの挿入には、1 回の書き込みに対して書込みロック(write lock)が必要です。
出力コレクションが存在しない場合、出力コレクションの作成には書込みロック(write lock)が必要です。
出力コレクションが存在する場合、出力アクション(つまり
merge
、replace
、reduce
)は書込みロック(write lock)を取得します。 この書込みロックはグローバルであり、mongod
インスタンスに対するすべての操作をブロックします。