MongoDB集約フレームワーク(Aggregation Framework)の使い方その2
URL
date
Nov 3, 2023
slug
mongodb-aggregation-framework-basic-practices-2
status
Published
tags
MongoDB
Basic
Command
Aggregate
Project
Group
summary
MongoDB集約フレームワーク(Aggregation Framework)の使い方その2
type
Post
MongoDB集約フレームワーク(Aggregation Framework)の$projectの使い方その2
前回の「MongoDB集約フレームワーク(Aggregation Framework)の使い方その1」の続きです。
※
persons
サンプルデータは、こちらの記事にあります。$project
の使い方
MongoDBの
$project
ステージは、Aggregationフレームワークの中で使用されるパイプラインの一部で、クエリ結果として返されるドキュメントの形状を変換するために使用されます。これは、指定されたフィールドを含めたり除外したりすることで、出力ドキュメントの構造を変えることができる強力なツールです。$project
ステージの主な機能
- フィールドの選択と除外: 特定のフィールドを選択して、他の不要なフィールドを結果から除外することができます。例えば、`{ _id: 0, name: 1, email: 1 }`というプロジェクションは、`_id`フィールドを除外し、`name`と`email`フィールドだけを含めるよう指示します。
- フィールドのリネーミング: 結果ドキュメントのフィールド名を変更することもできます。例えば、
{ newName: "$oldName" }
という形で、oldName
フィールドをnewName
にリネームします。
- 新しいフィールドの計算と追加: ドキュメント内の既存のデータを基にして、新しいフィールドを計算し、それを結果に追加することができます。複雑な式を使用することで、データを加工または組み合わせることが可能です。
- 組み込み関数の使用:
$toUpper
や$concat
のような組み込み関数を使用して、文字列操作や数値計算などを行い、その結果を新しいフィールドとして追加します。
- 条件式の使用:
$cond
や$ifNull
などの条件式を用いて、フィールド値に基づく条件分岐処理を行うことができます。
実践例 (Practice)
例えば、ユーザーのドキュメントが以下のような構造を持っているとします。
$project
ステージを使用して、以下の変換を実行することができます。_id
フィールドを除去。
firstName
とlastName
を結合して新しいfullName
フィールドを作成。
email
フィールドをそのまま保持。
この変換を行うAggregationクエリは、以下のようになります。
結果のドキュメントは以下のようになります。
上記のPractice例を踏まえて、前回の
persons
の続きです。$project
の実践例。