Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$setOnInsert (operador de actualización)

$setOnInsert

Si una operación de actualización con upsert: true resulta en la inserción de un documento, entonces asigna los valores especificados a los campos del documento.$setOnInsert $setOnInsert Si la operación de actualización no resulta en una inserción, 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, mongodya no genera un error cuando se utiliza un operador de actualización como$setOnInsertcon una expresión de operando vacía ( { } ). Una actualización vacía no produce cambios y no se crea ninguna entrada en el oplog (lo que significa que la operación no tiene efecto).

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 utiliza <query> para crear un nuevo documento _id: 1 con. actualiza el documento según lo$setOnInsert 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 $setOnInsert operación

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

Califique esta página