💭

MongoDBのアグリゲーションパイプラインについて

2023/10/21に公開

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