MongoDB – Operador SetOnInsert ($setOnInsert)

MongoDB proporciona diferentes tipos de operadores de actualización de campos para actualizar los valores de los campos de los documentos y el operador $setOnInsert es uno de ellos. Este operador se usa cuando se inserta un nuevo documento con la ayuda de la operación de actualización al establecer el valor de un campo upsert en verdadero, luego $setOneInsertel operador asigna el valor especificado a los campos en el documento. Si la operación de actualización no se utiliza para insertar un nuevo documento, el $setOnInsertoperador no hará nada.

El operador $setOnInsert también puede trabajar con documentos incrustados/anidados. Puede usar este operador en métodos como update(), findAndModify(), etc., según sus requisitos. Si el método update() o findAndModify() con upsert: true encontró un documento coincidente, mongoDB ignorará $setOnInsert y aplicará el operador $set, como se muestra a continuación en el ejemplo 3.

Sintaxis:

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

Para especificar un campo en documentos incrustados/anidados con la ayuda de la notación de puntos.

En los siguientes ejemplos, estamos trabajando con:

Base de datos:
Colección GeeksforGeeks : Documento de ejemplo
: un documento que contiene los detalles de los empleados en forma de pares de valor de campo.

Insertar nuevos campos en nuevos documentos usando $setOnInsert:

En este ejemplo, estamos creando un nuevo documento en la colección Ejemplo con la ayuda del método update() estableciendo el valor de un campo upsert en verdadero y usando el operador $setOneInsert para asignar los valores a los campos de departamento y salario en el documento.

db.Example.update({name: {first: "Mina", last: "Singh"},
... personalDetails: {age: 24, contactInfo: 345678901}},
... { $setOnInsert: {department: "Development", salary: 45000}},
... {upsert: true}
... )

Insertar nuevos campos incrustados en un nuevo documento usando $setOnInsert:

En este ejemplo, estamos creando un nuevo documento en la colección Ejemplo con la ayuda del método update() estableciendo el valor de un campo upsert en verdadero y utilizando $setOneInsert el operador para asignar los valores a los campos incrustados, es decir, en el documento.

db.Example.update({"name.first": "Vinod", expreienceYear: 5}, 
                  {$setOnInsert: {"personalDetails.age": 27, 
                                  "personalDetails.contactInfo": 345678901}},
                  {upsert: true})

Efecto del $setOnInsert operador en documentos coincidentes:

En este ejemplo, estamos comprobando si el operador $setOnInsert funciona con un documento coincidente o no. Este operador $setOnInsert no funciona con documentos ya presentes. O, en otras palabras, MongoDB ignorará este operador cuando el método update() encuentre el documento coincidente.

db.Example.update({"name.first": "Mina"}, 
                  {$setOnInsert: {"personalDetails.age": 27, 
                                  "personalDetails.contactInfo": 345678001}}, 
                  {upsert: true})

Antes:

Después:

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *