$expr (Consulta com Expressão de Agregação)

Última atualização: 2026-10-09

$expr (Consulta com Expressão de Agregação)

$expr permite que predicados de consulta usem expressões de agregação — comparando vários campos do mesmo documento ou chamando operadores de agregação. `{ $expr: { $gt: ['$price', '$cost'] } }` encontra produtos com preço acima do custo; o prefixo $ referencia valores de campo. $expr geralmente não pode usar índices (suporte parcial desde o MongoDB 6.0), então use-o com moderação em coleções grandes.

CategoriaElemento e Avaliação
Versão do MongoDB3.6+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $expr: { <expressão de agregação> } }

⚙️ Parâmetros

expressão de agregaçãoUma expressão de agregação, por exemplo { $gt: ['$price', '$cost'] }; $ referencia valores de campo.

Retorno:Cursor dos documentos correspondentes

▶ Exemplo

Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):

// $expr: produtos com preço acima do custo
// $price referencia o valor do campo
db.products.find({ $expr: { $gt: ['$price', '$cost'] } })

// Compara dois campos por igualdade
db.users.find({ $expr: { $eq: ['$email', '$username'] } })

Saída:

// Retorna produtos onde price excede cost; usuários cujo email é igual ao username

📌 Notas

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QComo $expr compara dois campos de um documento?
AReferencie campos com $: { $expr: { $gt: ['$price', '$cost'] } }.
Q$expr pode usar um índice?
AGeralmente não; desde o MongoDB 6.0 alguns casos (ex.: comparações de intervalo) podem usar um índice.
QQual é a diferença entre $expr e $where?
A$expr usa expressões de agregação (recomendado); $where executa JavaScript (lento, sem índices).
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%