$set (Definir Campo)
Última atualização: 2026-10-09
$set (Definir Campo)
$set atribui (ou sobrescreve) o valor de um ou mais campos em um documento. Ele cria o campo se ele não existir e aceita caminhos pontilhados para campos aninhados. É o operador de atualização mais usado. `{ $set: { "price": 19.99, "inStock": true } }` define vários campos de uma vez.
| Categoria | Atualização de Campo |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $set: { <campo1>: <valor1>, <campo2>: <valor2>, ... } }
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $set: define vários campos
db.products.updateOne(
{ _id: 1 },
{ $set: { price: 19.99, inStock: true } }
)
Saída:
// Retorna updatedCount: 1; o preço do documento vira 19.99 e inStock vira true
📌 Notas
- A semântica é igual ao $set pré-5.0; a semântica de atualização de arrays mudou ligeiramente a partir do MongoDB 7.0
- Use updateMany para aplicar a todos os documentos correspondentes
- $set sobrescreve campos existentes; ele não faz mesclagem
🏷️ Tags Relacionados
💡 Casos Relacionados
Prática: CRUD para um sistema de comentários de blog
Validação de esquema: validação de dados na camada do banco de dados
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
Q$set e $inc podem ser usados juntos?
ASim. $set atribui um valor fixo enquanto $inc realiza aritmética; ambos podem aparecer em uma única atualização (exceto no mesmo campo).
QComo $set difere de uma atribuição simples em update?
A$set atualiza apenas os campos nomeados e deixa o restante do documento intacto. Substituir o documento inteiro exige replaceOne, que descarta quaisquer campos não especificados.
Q$set sobrescreve campos existentes?
ASim. $set sobrescreve campos existentes com o novo valor e cria os ausentes. Ele é idempotente: repetir o mesmo $set produz o mesmo resultado.