VS Code 拡張機能 のコレクション集計パイプラインを実行できます。 集計パイプラインは、データを処理し、計算された結果を返すステージで構成されています。
集計の一般的な用途には、次のようなものがあります。
特定の式でデータをグループ化します。
複数のフィールドに基づいて結果を計算し、その結果を新しいフィールドに保存します。
データをフィルタリングして、指定された条件に一致するサブセットを返します。
データをソートします。
集計を実行すると、VS Code 拡張機能は Visual Studio Code 内で結果を直接出力できます。
プレイグラウンドを開いて集計パイプラインを実行
MongoDB Playground では 集計パイプライン を実行できます。 MongoDB Playgrounds は、クエリ、集計、MongoDB コマンドのプロトタイプを作成でき、便利な構文強調表示機能を持つ JavaScript 環境です。
新しい MongoDB Playground を開くには:
「Create MongoDB Playground」コマンドを検索して実行します。
コマンドを検索するには、 Command Palette検索バーを使用します。 VS Code 拡張機能に関連するすべてのコマンドの前にはMongoDB:が付きます。
MongoDB: Create MongoDB Playgroundコマンドを実行すると、VS Code 拡張機能によっていくつかのコマンドが事前構成されたデフォルトのプレイグラウンド テンプレートが開きます。
注意
テンプレートなしで新しいプレイグラウンドを読み込むには、 Use Default Template For Playground設定を無効にします。 VS Code 拡張設定の詳細については、「 Visual Studio Code 設定 」を参照してください。
集計パイプラインの作成と実行
集計パイプラインを作成するには、Playground で次の構文を使います。
db.<collection>.aggregate([ { <$stage1> }, { <$stage2> } ... ])
Playground を実行するには、Playground ビューの右上にある [ Play Button ] を押します。 VS Code 拡張機能は Playground を分割し、Playground の結果をPlayground Results.jsonペインに出力します。 分割ビューを無効にした場合、VS Code 拡張機能は Playground の結果を新しいタブに出力します。
例
この例を実行するには、空の MongoDB Playground から開始します。テンプレートの Playground がロードされている場合は、それをクリアします。
サンプル データをコレクションに挿入し、そのデータを集計する次のプレイグラウンドを検討してみましょう。
use("test"); db.sales.insertMany([ { "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : new Date("2014-03-01T08:00:00Z") }, { "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : new Date("2014-03-01T09:00:00Z") }, { "_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : new Date("2014-03-15T09:00:00Z") }, { "_id" : 4, "item" : "xyz", "price" : 5, "quantity" : 20, "date" : new Date("2014-04-04T11:21:39.736Z") }, { "_id" : 5, "item" : "abc", "price" : 10, "quantity" : 10, "date" : new Date("2014-04-04T21:23:13.331Z") }, { "_id" : 6, "item" : "def", "price" : 7.5, "quantity": 5, "date" : new Date("2015-06-04T05:08:13Z") }, { "_id" : 7, "item" : "def", "price" : 7.5, "quantity": 10, "date" : new Date("2015-09-10T08:43:00Z") }, { "_id" : 8, "item" : "abc", "price" : 10, "quantity" : 5, "date" : new Date("2016-02-06T20:20:13Z") } ]) db.sales.aggregate([ { $match: { date: { $gte: new Date("2014-01-01"), $lt: new Date("2015-01-01") } } }, { $group: { _id: "$item", totalSaleAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } } } } ])
このパイプライン:
testデータベースに切り替えます。test.salesコレクションに 8 つのドキュメントを挿入します。集計を 2 段階で実行します。
Play Buttonを押すと、VS Code 拡張機能によってプレイグラウンドが分割され、次のドキュメントがPlayground Results.jsonペインに出力されます。 分割ビューを無効にした場合、VS Code 拡張機能は次のドキュメントを新しいタブに出力します。
[ { _id: 'abc', totalSaleAmount: 120 }, { _id: 'jkl', totalSaleAmount: 20 }, { _id: 'xyz', totalSaleAmount: 150 } ]
Tip
利用可能な集計ステージの詳細については、「 集計パイプライン ステージ」を参照してください。
ステージ内で使用できる集計演算子の詳細については、「 集計パイプライン演算子」を参照してください。