Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

$setOnInsert (operador de actualización)

$setOnInsert

Si una operación de actualización con upsert: true da como resultado una inserción de un documento, luego $setOnInsert asigna los valores especificados a los campos del documento. Si la operación de actualización no da como resultado una inserción, $setOnInsert no hace nada.

Puedes especificar la opción upsert para:

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

Para especificar un <field> en un documento incrustado o en un arreglo, utiliza notación de puntos.

A partir de MongoDB 5.0, los operadores de actualización procesan los campos de documentos con nombres basados en cadenas en orden lexicográfico. Los campos con nombres numéricos se procesan en orden numérico. Consulta Comportamiento del operador de actualización para obtener más información.

A partir de MongoDB 5.0, mongod ya no genera un error cuando utiliza un operador de actualización como $setOnInsert con una expresión de operando vacía ( { } ). Una actualización vacía no produce cambios y no genera ninguna entrada en el oplog (lo que significa que la operación es una “no-op").

La colección products no contiene documentos.

Insertar un nuevo documento utilizando db.collection.updateOne() el parámetro inserción: true.

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

MongoDB usa <query> para crear un nuevo documento con _id: 1. $setOnInsert actualiza el documento según lo especificado.

La colección products contiene el documento recién insertado:

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

Cuando el parámetro inserción es true db.collection.updateOne():

  • crea un nuevo documento

  • aplica la operación $set

  • aplica la operación $setOnInsert

Si db.collection.updateOne() coincide con un documento existente, MongoDB solo aplica la operación $set.

Tip

Volver

$set

En esta página