$addFields (フィールド追加)

最終更新:2026-10-09

$addFields (フィールド追加)

$addFields は、各ドキュメントに新しいフィールドを追加したり既存フィールドを上書きしたりしつつ、他のフィールドはすべて保持します。指定外のフィールドをデフォルトで落とす $project とは違い、$addFields はドキュメントを増やすだけです。新しい値には任意の集計式を指定でき、$lookup の結果から計算することが多いです。MongoDB 3.4 以降は $set と同じ機能です。

カテゴリコアステージ
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $addFields: { <newField>: <expression>, ... } }

⚙️ パラメータ

新しいフィールド入力ドキュメントのフィールドを参照する式にフィールド名をマッピングします。

戻り値:フィールドを追加または上書きしたドキュメントストリーム

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $addFields: total フィールドを追加
db.sales.aggregate([
  { $addFields: { total: { $multiply: ['$price', '$qty'] } } }
])

出力:

// 元のフィールドはすべて保持され、total が追加される
{ "item": "Pen", "price": 50, "qty": 3, "total": 150 }

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Q$addFields と $set の違いは?
AMongoDB 3.4 以降は完全に同じ機能で、$addFields が古い名前です。
Q$addFields は自分が追加したフィールドを参照できますか?
Aいいえ。1 つのステージ内の式は入力ドキュメントしか見られません。複数フィールドの依存関係は $addFields ステージを連ねて解決します。
Q$addFields は既存フィールドを上書きしますか?
Aはい。同名フィールドは上書きされます。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%