$set (Definir Campos)
Última atualização: 2026-10-09
$set (Definir Campos)
$set é um alias de $addFields: ele adiciona ou sobrescreve campos em cada documento mantendo todo o resto. Use-o no meio do pipeline para anexar valores calculados, constantes ou resultados de expressões. Introduzido no MongoDB 3.4, é totalmente intercambiável com $addFields; note que ele compartilha um nome com o operador de atualização $set.
| Categoria | Estágios Principais |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $set: { <campo>: <expressão>, ... } }
⚙️ Parâmetros
| campo | Nomes de campo mapeados para expressões de agregação ou valores constantes. |
|---|
Retorno:Fluxo de documentos com campos definidos
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $set: adiciona uma constante status, converte o tipo de amount
db.orders.aggregate([
{ $set: { status: 'PENDING', amount: { $toDouble: '$amount' } } }
])
Saída:
// Campos originais mantidos; status é uma constante, amount convertido para double
📌 Notas
- $set é totalmente equivalente a $addFields
- _id e todos os campos não mencionados ficam intactos
- Você não pode referenciar campos definidos no mesmo estágio
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QDevo usar $set ou $addFields?
AAmbos funcionam; $addFields é mais comum, enquanto $set pode ser confundido com o operador de atualização.
Q$set pode definir campos embutidos?
ASim, com caminhos pontilhados, ex.: { $set: { 'addr.city': 'SH' } }.
Q$set exclui campos?
ANão, ele apenas adiciona ou sobrescreve; use $unset para remover campos.