$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 }
📌 注意事項
- $ で始まるフィールド名はパスではなくリテラルとして扱われる
- input の既定値は $$CURRENT
- フィールドが欠落していると null を返す。必要なら $ifNull と組み合わせる
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$getField と '$field' の直接指定の違いは?
A直接のパスはドットや $ が解析されますが、$getField はリテラル名で検索し、特殊文字や動的な名前に対応します。
Qドットを含む名前を取得できますか?
Aはい — 名前はリテラルとして扱われ、入れ子パスに分割されません。
Qinput を省略するとどうなりますか?
A$$CURRENT、つまり現在のドキュメントが既定になります。