MongoDB 速習チュートリアル

$addFields

1. $addFields ステージの概要

このアグリゲーションステージは、ドキュメントに新しいフィールドを追加するために使用されます。既存のフィールドの値を基に計算を行ったり、静的な値を割り当てたりして、ドキュメントの構造を動的に拡張することが可能です。

2. $addFields の活用例

以下の例では、「アグリゲーション入門」セクションでロードしたサンプルデータセットの中から、sample_restaurants データベースを使用します。

2.1 コード例:平均スコアの算出とフィールド追加

ここでは、各レストランの grades.score(評価スコア)の平均値を計算し、新しく avgGrade というフィールドとしてドキュメントに追加します。

db.restaurants.aggregate([
  {
    // ステージ 1: 新しいフィールド "avgGrade" を追加
    $addFields: {
      avgGrade: { $avg: "$grades.score" }
    }
  },
  {
    // ステージ 2: レストラン名と、計算した平均スコアのみを表示
    $project: {
      "name": 1,
      "avgGrade": 1
    }
  },
  {
    // ステージ 3: 結果を 5 件に制限
    $limit: 5
  }
])

2.2 実行結果の解説

このクエリを実行すると、元のドキュメントに加えて、各レストランの grades.score の平均値が格納された avgGrade フィールドを含むドキュメントが返されます。