$getField (Obter Campo pelo Nome)
Última atualização: 2026-10-09
$getField (Obter Campo pelo Nome)
$getField busca um campo pelo seu nome literal em um documento, sem interpretar o nome como caminho de campo mesmo que comece com $ ou contenha caracteres especiais. A sintaxe é { $getField: { field: nome-do-campo, input: documento } }, com input assumindo o padrão de $$CURRENT. É usado para nomes de campos dinâmicos ou nomes com caracteres especiais. Um campo ausente retorna null. Em comparação com escrever '$field' diretamente, $getField é mais flexível, porém mais verboso.
| Categoria | Literal, Variável e Objeto |
|---|---|
| Versão do MongoDB | 5.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $getField: { field: <nome-do-campo>, input: <expressão de documento> } }
⚙️ Parâmetros
| field | O nome do campo como string ou uma expressão que resolva para uma string. |
|---|---|
| input | Documento de destino opcional; o padrão é $$CURRENT. |
Retorno:O valor do campo; null quando o campo está ausente ou a entrada é null
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $getField: buscar um campo pelo nome no documento atual
db.orders.aggregate([
{ $project: {
price: { $getField: { field: 'price', input: '$$CURRENT' } }
} }
])
Saída:
{ '_id': 1, 'price': 199 }
{ '_id': 2, 'price': 59 }
📌 Notas
- Um nome de campo que começa com $ é tratado literalmente, não como caminho
- input assume o padrão de $$CURRENT
- Um campo ausente retorna null; combine com $ifNull quando necessário
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QComo $getField difere de escrever $field diretamente?
ACaminhos diretos são interpretados quanto a pontos e $, enquanto $getField busca o nome literal e suporta caracteres especiais e nomes dinâmicos.
QO $getField consegue buscar nomes contendo pontos?
ASim, o nome é tratado literalmente e não é dividido em caminhos aninhados.
QO que acontece se eu omitir o input de $getField?
AEle assume o padrão de $$CURRENT, o documento atual.