$getField (名前によるフィールド取得)

最終更新:2026-10-09

$getField (名前によるフィールド取得)

$getField はドキュメントからリテラル名でフィールドを取得します。$ で始まる名前や特殊文字を含む名前でも、フィールドパスとして解釈しません。構文は { $getField: { field: フィールド名, input: ドキュメント } } で、input の既定値は $$CURRENT です。動的なフィールド名や特殊文字を含む名前の取得に使われます。フィールドが欠落している場合は null を返します。'$field' を直接書くのと比べ、$getField は柔軟ですが冗長です。

カテゴリリテラル・変数・オブジェクト
MongoDB バージョン5.0+
例の言語mongosh(シェル)

📝 構文

{ $getField: { field: <field-name>, input: <document-expression> } }

⚙️ パラメータ

field文字列としてのフィールド名、または文字列に解決される式。
input任意の対象ドキュメント。既定は $$CURRENT。

戻り値:フィールド値。フィールドが欠落しているか入力が null の場合は null

▶ 例

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

// $getField: 現在のドキュメントから名前でフィールドを取得
db.orders.aggregate([
  { $project: {
      price: { $getField: { field: 'price', input: '$$CURRENT' } }
  } }
])

出力:

{ '_id': 1, 'price': 199 }
{ '_id': 2, 'price': 59 }

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q$getField と '$field' の直接指定の違いは?
A直接のパスはドットや $ が解析されますが、$getField はリテラル名で検索し、特殊文字や動的な名前に対応します。
Qドットを含む名前を取得できますか?
Aはい — 名前はリテラルとして扱われ、入れ子パスに分割されません。
Qinput を省略するとどうなりますか?
A$$CURRENT、つまり現在のドキュメントが既定になります。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%