Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / / /

$set

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Comportamento
  • Exemplos

Observação

Desambiguação

A seguinte página refere-se ao operador de atualização $set. Para o estágio de agregação, consulte $set.

$set

O operador $set substitui o valor de um campo pelo valor especificado.

Você pode utilizar o $set para implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações MongoDB na nuvem

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

A expressão do operador $set tem o seguinte formato:

{ $set: { <field1>: <value1>, ... } }

Para especificar um <field> em um documento incorporado ou em uma array, use a notação de ponto.

A partir do MongoDB 5.0, os operadores de atualização processam campos de documento com nomes baseados em cadeia de caracteres em ordem lexicográfica. Os campos com nomes numéricos são processados em ordem numérica. Consulte Atualizar Comportamento de Operadores para detalhes.

Se o campo não existir, $set adicionará um novo campo com o valor especificado, desde que o novo campo não viole uma restrição de tipo. Se você especificar um caminho pontilhado para um campo inexistente, $set criará os documentos incorporados conforme necessário para preencher o caminho pontilhado para o campo.

Se você especificar vários pares campo-valor, $set atualizará ou criará cada campo.

A partir do MongoDB 5.0, mongod não gera mais um erro ao usar um operador de atualização como $set com uma expressão de operando vazia ( { } ). Uma atualização vazia não resulta em alteração e nenhuma entrada no oplog é criada (o que significa que é sem operação).

Crie a coleção products:

db.products.insertOne(
{
_id: 100,
quantity: 250,
instock: true,
reorder: false,
details: { model: "14QQ", make: "Clothes Corp" },
tags: [ "apparel", "clothing" ],
ratings: [ { by: "Customer007", rating: 4 } ]
}
)

Para o documento que corresponde aos critérios _id iguais a 100, a operação a seguir usa o operador $set para atualizar o valor dos campos quantity, details e tags.

db.products.updateOne(
{ _id: 100 },
{ $set:
{
quantity: 500,
details: { model: "2600", make: "Fashionaires" },
tags: [ "coats", "outerwear", "clothing" ]
}
}
)

A operação atualiza o:

  • valor de quantity para 500

  • details campo com novo documento incorporado

  • tags campo com nova array

{
_id: 100,
quantity: 500,
instock: true,
reorder: false,
details: { model: '2600', make: 'Fashionaires' },
tags: [ 'coats', 'outerwear', 'clothing' ],
ratings: [ { by: 'Customer007', rating: 4 } ]
}

Para especificar um <field> em um documento incorporado ou em uma array, use a notação de ponto.

Para o documento que corresponde aos critérios _id iguais a 100, a operação a seguir atualiza o campo make no documento details:

db.products.updateOne(
{ _id: 100 },
{ $set: { "details.make": "Kustom Kidz" } }
)

Após a atualização, o documento tem os seguintes valores:

{
_id: 100,
quantity: 500,
instock: true,
reorder: false,
details: { model: '2600', make: 'Kustom Kidz' },
tags: [ 'coats', 'outerwear', 'clothing' ],
ratings: [ { by: 'Customer007', rating: 4 } ]
}

Importante

O código acima utiliza dot notation para atualizar o campo make do documento details incorporado. O formato de código parece semelhante ao seguinte exemplo de código, que em vez disso substitui todo o documento incorporado, removendo todos os outros campos no documento details encorporado:

db.products.updateOne(
{ _id: 100 },
{ $set: { details:
{make: "Kustom Kidz"}
}
})

Para especificar um <field> em um documento incorporado ou em uma array, use a notação de ponto.

Para o documento que corresponde aos critérios _id iguais a 100, a operação a seguir atualiza o segundo elemento de valor (índice de array de 1) no campo tags e o campo rating no primeiro elemento (índice de array de 0) da array ratings.

db.products.updateOne(
{ _id: 100 },
{ $set:
{
"tags.1": "rain gear",
"ratings.0.rating": 2
}
}
)

Após a atualização, o documento tem os seguintes valores:

{
_id: 100,
quantity: 500,
instock: true,
reorder: false,
details: { model: '2600', make: 'Kustom Kidz' },
tags: [ 'coats', 'rain gear', 'clothing' ],
ratings: [ { by: 'Customer007', rating: 2 } ]
}

Para operadores de atualização adicionais para arrays, consulte Operadores de atualização de array.

Dica

Veja também:

Voltar

$renomear

Próximo

$setOnInsert