$let (Variáveis Locais)
Última atualização: 2026-10-09
$let (Variáveis Locais)
$let define variáveis locais dentro de expressões de agregação para uso na expressão in, evitando a avaliação repetida de subexpressões complexas. A sintaxe é { $let: { vars: { nome: expressão }, in: expressão } }, referenciando variáveis como $$nome. É usado para calcular um resultado intermediário uma vez e reutilizá-lo, como aplicar um desconto e depois calcular o preço após impostos. Desde o MongoDB 5.0, vars também aceita uma forma de array [{ nome: ..., valor: ... }] que suporta nomes de variáveis prefixados com $.
| Categoria | Literal, Variável e Objeto |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $let: { vars: { <variável>: <expressão> }, in: <expressão> } }
⚙️ Parâmetros
| vars | Definições de variáveis, como um objeto ou, desde o MongoDB 5.0, na forma de matriz. |
|---|---|
| in | A expressão que usa as variáveis, referenciadas como $$name. |
Retorno:O resultado da expressão in
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $let: calcular um preço com desconto usando variáveis locais
db.orders.aggregate([
{ $project: {
finalPrice: {
$let: {
vars: { base: '$price', discount: { $multiply: ['$price', 0.1] } },
in: { $subtract: ['$$base', '$$discount'] }
}
}
} }
])
Saída:
{ '_id': 1, 'finalPrice': 90 }
{ '_id': 2, 'finalPrice': 45 }
📌 Notas
- As variáveis têm escopo apenas na expressão in
- Referencie variáveis com prefixo $$, como $$base
- Na forma de array, valor pode ser uma expressão de caminho de campo
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QPara que serve $let?
ADefinir variáveis locais para reutilizar resultados intermediários em vez de repetir expressões complexas.
QComo referencio variáveis de $let?
AUse $$nome dentro da expressão in.
QAs variáveis de $let podem conflitar com variáveis de sistema?
AUma variável definida por $let faz sombra a uma variável de sistema de mesmo nome, então escolha os nomes com cuidado.