Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/

集計操作

集計操作は、複数のドキュメントを処理し、計算結果を返します。 集計操作を使用すると、次のことができます。

  • 複数のドキュメントの値をグループ化します。

  • グループ化されたデータから単一の結果を計算します。

  • 時間の経過に伴うデータの変化を分析します。

  • データの最新バージョンをクエリします。

MongoDBの集計演算子 を使用すると、データを別のプラットフォームに移動せずにクラスターで分析を実行できます。

集計操作を実行するには、次を使用できます。

  • 集計パイプライン、推奨される方法です。

  • 単一目的の集計メソッドで、集計パイプラインよりも機能が低くなります。

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

集計パイプラインは、ドキュメントを処理する 1 つ以上の ステージで構成されます。これらのドキュメントは、コレクション、ビュー、または特別に設計された ステージから取得されます。

各ステージは、入力ドキュメントに対して操作を実行します。例、 ステージでは $filter ドキュメント、$group ドキュメント、および 値の計算が可能です。ステージが出力するドキュメントは、パイプラインの次のステージに渡されます。

集計パイプラインは、ドキュメントのグループの結果を返す場合があります。「 集計パイプラインによる更新 」に示されているステージを使用して、集計パイプラインでドキュメントを更新することもできます。

注意

aggregation pipelinedb.collection.aggregate()collectionメソッドで実行される は、パイプラインに$merge または$out ステージが含まれていない限り、 内のドキュメントを変更しません。

このページの例では、sample_mflixサンプルデータセットのデータを使用します。このデータセットを自己管理型MongoDB配置にロードする方法の詳細については、サンプルデータセットをロードする を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。

次のパイプラインは、データベース内の最も多くの映画を監督した上位 3 人の監督を検索します。

$matchステージを使用して、監督がリストされている映画をフィルタリングします(監督フィールドが null または空であるドキュメントを除く)。

{
$match : {
"directors" : { $exists: true, $ne: null, $not: {$size: 0} }
}
},

$matchステージでは、役員情報のない映画をフィルタリングで除外することで、パイプライン内のドキュメント数を削減します。次に、$unwind を使用してdirectory 配列を分解し、個々の役員ごとに映画をカウントできるようにします。

{
$unwind : "$directors"
},

$groupを使用して、ドキュメントを役員名ごとにグループ化し、各監督の映画をカウントします。

{
$group : {
_id : "$directors",
movieCount : {
$sum: 1
}
}
},

$sortを使用して、残りのドキュメントを映画数の降順で並べ替えます。

{
$sort : {
movieCount : -1
}
},

$limit上位 3 つの役員を返すには、 を使用します。

{
$limit : 3
}

完全なパイプライン:

db.movies.aggregate(
[
{
$match : {
"directors" : { $exists: true, $ne: null, $not: {$size: 0} }
}
},
{
$unwind : "$directors"
},
{
$group : {
_id : "$directors",
movieCount : {
$sum: 1
}
}
},
{
$sort : {
movieCount : -1
}
},
{
$limit : 3
}
]
)

パイプラインは、次の結果を返します。

[
{ _id: 'Woody Allen', movieCount: 40 },
{ _id: 'Martin Scorsese', movieCount: 32 },
{ _id: 'Takashi Miike', movieCount: 31 }
]

サンプル入力ドキュメントを含む実行可能な例については、 「完全なaggregation pipelineの例」を参照してください。

集計パイプラインの詳細については、 集計パイプラインを参照してください。

単目的集計メソッドは、単一のコレクションのドキュメントを集計します。これらのメソッドは、集計パイプラインよりも機能が低くなります。

方式
説明

collectionまたはビュー内のドキュメントのおおよその数を返します。

collectionまたはビュー内のドキュメントの数を返します。

指定されたフィールドに対して異なる値を持つドキュメントの範囲を返します。

戻る

通貨データ

ルール バッジを取得する

「データ変換の基礎」を無料でマスターしましょう!

詳細

項目一覧