Docs Menu

集計コマンドの比較

注意

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

MongoDB 5.0 以降、map-reduce は非推奨になっています。

  • map-reduceの代わりに、集計パイプラインを使用する必要があります。 集計パイプラインは、map-reduce よりもパフォーマンスとユーザビリティが優れています。

  • map-reduce 操作は、$group$merge などの集計パイプライン ステージ を使用して書き換えることができます。

  • カスタム機能を必要とする map-reduce 操作には、 $accumulator$functionの集計演算子を使用できます。 これらの演算子を使用して、JavaScript でカスタム集計式を定義できます。

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

The following table provides a brief overview of the features of the MongoDB aggregation commands.

説明

Designed with specific goals of improving performance and usability for aggregation tasks.

Uses a "pipeline" approach where objects are transformed as they pass through a series of pipeline operators such as $group, $match, and $sort.

See 集計演算子 for more information on the pipeline operators.

Implements the Map-Reduce aggregation for processing large data sets.

主な特徴

Pipeline operators can be repeated as needed.

Pipeline operators need not produce one output document for every input document.

Can also generate new documents or filter out documents.

Using the $merge stage, you can create on-demand materialized views, where the content of the output collection can be updated incrementally the pipeline is run. $merge can incorporate results (insert new documents, merge documents, replace documents, keep existing documents, fail the operation, process documents with a custom update pipeline) into an existing collection.

In addition to grouping operations, can perform complex aggregation tasks as well as perform incremental aggregation on continuously growing datasets.

See map-reduce の例 and インクリメンタル map-reduce の実行.

Flexibility

You can define custom aggregation expressions with $accumulator and $function.

You can also add computed fields, create new virtual sub-objects, and extract sub-fields into the top-level of results by using the $project pipeline operator.

See $project for more information as well as 集計演算子 for more information on all the available pipeline operators.

Custom map, reduce and finalize JavaScript functions offer flexibility to aggregation logic.

See mapReduce for details and restrictions on the functions.

Output Results

Returns results as a cursor. If the pipeline includes the $out stage or $merge stage, the cursor is empty.

With $out, you can replace an existing output collection completely or output to a new collection. See $out for details.

With $merge, you can output to a new or existing collection. For existing cllections, you can specify how to incorporate the results into the output collection (insert new documents, merge documents, replace documents, keep existing documents, fail the operation, process documents with a custom update pipeline). See $merge for details.

Returns results in various options (inline, new collection, merge, replace, reduce). See mapReduce for details on the output options.

シャーディング

Supports non-sharded and sharded input collections.

$merge can output to a non-sharded or sharded collection.

Supports non-sharded and sharded input collections.

More Information

以下も参照してください。