$setOnInsert (Definir na Inserção)

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

$setOnInsert (Definir na Inserção)

$setOnInsert define valores de campo apenas quando um upsert insere um novo documento; ele é ignorado quando um documento existente é correspondido. `{ $setOnInsert: { createdAt: new Date() } }`. Combinado com upsert: true, registra timestamps de criação e inicializa padrões — semântica de definir-na-criação, deixar-na-atualização.

CategoriaAtualização de Campo
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $setOnInsert: { <campo>: <valor> } }

⚙️ Parâmetros

campoO campo definido apenas na inserção.
valorO valor inicial, por exemplo um horário de criação.

Retorno:O resultado da atualização

▶ Exemplo

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

// $setOnInsert: createdAt definido apenas na inserção
db.users.updateOne(
  { email: 'alice@example.com' },
  {
    $set: { name: 'Alice' },
    $setOnInsert: { createdAt: new Date() }
  },
  { upsert: true }
)

Saída:

// createdAt é registrado na primeira inserção; atualizações posteriores o deixam intacto

📌 Notas

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QQuando $setOnInsert entra em vigor?
AApenas quando o upsert realmente insere; ignorado ao atualizar um documento existente.
Q$setOnInsert e $set podem ser usados juntos?
ASim; $set se aplica toda vez, $setOnInsert apenas na inserção.
Qupsert: true deve estar definido?
ASim, caso contrário ele nunca dispara em cenários de atualização pura.
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%