💭
MongoDBのアグリゲーションパイプラインについて
MongoDBのアグリゲーションパイプラインについて
MongoDBのアグリゲーションパイプラインは、データ変換と分析のための強力なツールです。これにより、ドキュメントのグループ化、ソート、変換など、様々な操作を行うことができます。
アグリゲーションパイプラインの基本
アグリゲーションパイプラインは、一連のステージから構成されます。各ステージは、入力ドキュメントを受け取り、出力ドキュメントを生成します。ステージは順番に実行され、一つのステージの出力が次のステージの入力となります。
db.collection.aggregate([
{ $stage1: { ... } },
{ $stage2: { ... } },
...
]);
主なステージの操作
$match
: フィルタリング
db.collection.aggregate([
{ $match: { age: { $gte: 21 } } }
]);
$group
: 集約
db.collection.aggregate([
{
$group: {
_id: "$country",
total: { $sum: "$amount" }
}
}
]);
$project
: フィールドの変換/削除
db.collection.aggregate([
{ $project: { name: 1, age: 1 } }
]);
$sort
: ソート
db.collection.aggregate([
{ $sort: { age: -1 } }
]);
$limit
と$skip
: リミットとスキップ
db.collection.aggregate([
{ $skip: 10 },
{ $limit: 5 }
]);
実例: 集約クエリ
以下のクエリは、国別に売上合計を計算し、売上が最も高い国を見つける例です。
db.sales.aggregate([
{
$group: {
_id: "$country",
totalSales: { $sum: "$amount" }
}
},
{
$sort: { totalSales: -1 }
},
{
$limit: 1
}
]);
このように、アグリゲーションパイプラインはデータの集約や変換に非常に強力で、多くの可能性を提供します。さらに学びたい場合は、MongoDBの公式ドキュメントを参照してください。
Discussion