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ステージの主な機能

  1. フィールドの選択と除外: 特定のフィールドを選択して、他の不要なフィールドを結果から除外することができます。例えば、`{ _id: 0, name: 1, email: 1 }`というプロジェクションは、`_id`フィールドを除外し、`name`と`email`フィールドだけを含めるよう指示します。
  1. フィールドのリネーミング: 結果ドキュメントのフィールド名を変更することもできます。例えば、{ newName: "$oldName" }という形で、oldNameフィールドをnewNameにリネームします。
  1. 新しいフィールドの計算と追加: ドキュメント内の既存のデータを基にして、新しいフィールドを計算し、それを結果に追加することができます。複雑な式を使用することで、データを加工または組み合わせることが可能です。
  1. 組み込み関数の使用: $toUpper$concatのような組み込み関数を使用して、文字列操作や数値計算などを行い、その結果を新しいフィールドとして追加します。
  1. 条件式の使用: $cond$ifNullなどの条件式を用いて、フィールド値に基づく条件分岐処理を行うことができます。
 

実践例 (Practice)

例えば、ユーザーのドキュメントが以下のような構造を持っているとします。
 
$projectステージを使用して、以下の変換を実行することができます。
  • _idフィールドを除去。
  • firstNamelastNameを結合して新しいfullNameフィールドを作成。
  • emailフィールドをそのまま保持。
 
この変換を行うAggregationクエリは、以下のようになります。
 
 
結果のドキュメントは以下のようになります。
 
 
上記のPractice例を踏まえて、前回の personsの続きです。
$projectの実践例。

© EndlessDev2016 2021 - 2025