Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

$setOnInsert (operador de atualização)

$setOnInsert

Se uma operação de atualização com upsert: verdadeiro resultar em uma inserção de um documento, então atribuirá os valores especificados aos campos no documento.$setOnInsert $setOnInsert Se a operação de atualização não resultar em uma inserção, o não fará nada.

Você pode especificar a opção upsert para:

db.collection.updateOne(
<query>,
{ $setOnInsert: { <field1>: <value1>, ... } },
{ upsert: true }
)

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.

A partir do MongoDB,5.0 mongod não gera mais um erro quando você usa um operador de atualização como $setOnInsert com uma expressão de operando vazia ( { } ). Uma atualização vazia não resulta em nenhuma alteração e nenhuma entrada no oplog é criada (o que significa que a operação é um no-op).

A collection products não contém documentos.

Insira um novo documento utilizando o parâmetro upsert: verdadeiro db.collection.updateOne().

db.products.updateOne(
{ _id: 1 },
{
$set: { item: "apple" },
$setOnInsert: { defaultQty: 100 }
},
{ upsert: true }
)

O MongoDB usa <query> para criar um novo documento _id: 1 com. atualiza o documento conforme$setOnInsert especificado.

A collection products contém o documento recém-inserido:

{ "_id" : 1, "item" : "apple", "defaultQty" : 100 }

Quando o parâmetro upsert é true db.collection.updateOne():

  • cria um novo documento

  • aplica a operação $set

  • aplica $setOnInsert a operação

Se db.collection.updateOne() corresponder a um documento existente, o MongoDB aplicará somente a operação $set.

Avalie esta página