MongoDB $ Setoninsert Operator

MongoDB $ Setoninsert Operator
El método update () de MongoDB proporciona varios operadores para actualizar los valores del documento. De estos operadores, vamos a explorar el operador $ setoninsert. El operador $ setoninsert en MongoDB realiza una operación de inserción y actualización cuando se aplica el indicador Upsert con la función Update (). Cuando se especifica la opción Upsert con el valor verdadero y se inserta un documento, solo el operador $ Setoninsert inserta un campo durante la operación de actualización. El operador $ setoninsert no tiene impacto en el caso en el que la función no agrega un documento.

Cómo funciona el operador $ Setoninsert en MongoDB

El operador $ Setoninsert de MongoDB realiza las operaciones actualizadas () que tienen el indicador Upsert que implica que esta operación solo inserta datos. Para comenzar la operación del operador $ setoninsert, necesitamos crear la colección MongoDB. Aquí, titulamos la colección como "WorkersCollection" e insertamos algunos documentos en esta colección. Para insertar los documentos en las "WorkerCollections", se implementa la consulta InsertMany del MongoDB que inserta la mayor parte del documento al mismo tiempo. La consulta de múltiples inserciones de documentos en "WorkersCollection" está representada a continuación:

db.Colección de trabajadores.insertone (
"ID": 1,
"Nombre": "Bella",
"Edad": 31,
"Salario": 50000,
"Altura": 6.5,
"Horas Laborales" :
"Día": "8 horas",
"Noche": "5 horas"
,
"Detalles" :
"Ciudad": "Newyork",
"Teléfono": "0842888123"

,

"ID": 2,
"Nombre": "Kevin",
"Age": 29,
"Salario": 45000,
"Altura": 5.9,
"Horas Laborales" :
"Día": "6 horas",
"Noche": "3hrs"
,
"Detalles" :
"Ciudad": "Houston",
"Teléfono": "8329423099"

,

"ID": 3,
"Nombre": "Steven",
"Age": 34,
"Salario": 39000,
"Altura": 6.4,
"Horas Laborales" :
"Día": "9 horas",
"Noche": "2hrs"
,
"Detalles" :
"Ciudad": "California",
"Teléfono": "812373002"

)

Cuando los documentos de la colección proporcionados se insertan correctamente, la siguiente salida se obtiene en la carcasa MongoDB:


Reconocido: verdadero,
insertedid: objectId ("63B56A6707E9102DCADCF96A")

Ejemplo 1: Uso del operador $ setoninsert para insertar el nuevo documento

Ya insertamos tres documentos en la colección MongoDB, "WorkersCollection". Ahora, podemos agregar un nuevo documento en la misma colección con el operador $ setoninsert. Tenemos la siguiente consulta donde usamos el método update () para especificar la expresión "ID": 4 ". Luego, empleamos el operador "$ setoninsert" para establecer los campos de "edad" y "salario" con los nuevos valores que no existen en el documento. Después de eso, aplicamos la bandera Upsert con el valor "verdadero". Primero, el nuevo documento se crea con la "ID": 4. Luego, el operador $ setoninsert asigna los valores al campo correspondiente del nuevo documento.

db.Colección de trabajadores.Update ("id": 4, $ setoninsert: "edad": 35, "salario": 40000, upsert: true);

La ejecución de la consulta de Upsert anterior devuelve la salida que se muestra en la siguiente demostración. El WriterSults tiene la opción UpsertedCount que tiene el valor de "1", lo que indica que el documento está subsertado en la colección.


Reconocido: verdadero,
Insertedid: ObjectId ("63B56CCA378B59E68E0C4608"),
MatchedCount: 0,
ModifiedCount: 0,
UpsertedCount: 1

Ejemplo 2: Uso del operador $ Setoninsert para insertar los nuevos campos integrados en un nuevo documento

El operador $ setoninsert también se usa para el documento integrado. Podemos utilizar el operador $ setoninsert con la función update () y la opción upsert que se asigna a verdad. Aquí hay una representación de la consulta para insertar el nuevo documento integrado en nuestra "Collection de trabajadores". Empleamos el método update () donde establecemos los detalles ".Ciudad ":" Chicago " Expresión primero. Luego, aplicamos el operador $ Setoninsert donde los campos integrados, “Working Hours.Día "y" trabajadores.Noche ”, se establecen con nuevos valores. La opción Upsert también se establece con el valor real para actualizar el documento integrado.

db.Colección de trabajadores.ACTUALIZACIÓN ("Detalles.Ciudad ":" Chicago ",
$ setoninsert: "WorkingHours.Día ":" 5 horas "," WorkingHours.Noche ":" 5hrs ", Upsert: true)

El WritereSult en la siguiente salida indica que la cuenta Upserted es 1, lo que significa que la operación anterior es exitosa.


Reconocido: verdadero,
Insertedid: ObjectId ("63B584D4378B59E68E0C4B36"),
MatchedCount: 0,
ModifiedCount: 0,
UpsertedCount: 1

Ejemplo 3: Uso del operador $ setoninsert para actualizar el documento

Hay otro caso del operador $ setoninsert de MongoDB. Los ejemplos anteriores utilizaron el operador $ setoninsert para insertar el nuevo documento. Ahora, en este caso de MongoDB, utilizamos el operador $ Setoninsert para actualizar el documento que ya está presente en la colección "WorkersCollection". Aquí, tenemos una consulta de actualización () que establece la condición que actualiza el documento cuyo valor de campo "ID" es "2". Cuando el documento coincide, la siguiente operación se realiza donde usamos los operadores $ set y $ setoninsert. El operador $ set se especifica con el valor contra los campos de "edad" y "altura". Luego, el operador $ setoninsert se implementa para insertar el campo de nombre con el valor "Carle" en el documento existente. Al final, asignamos el valor verdadero a la opción UPSERT para operar.

db.Colección de trabajadores.actualizar(
"id": 2,

$ set: edad: 40, altura: 5.7,
$ setoninsert: nombre: "Carle"
,
Upsert: True
)

El documento se actualiza correctamente y se muestra la siguiente salida con el valor de la opción UpsertCount que se establece en True:


Reconocido: verdadero,
Insertedid: 2,
MatchedCount: 0,
ModifiedCount: 0,
UpsertedCount: 1

Ejemplo 4: Uso del operador $ Setoninsert para actualizar el documento sin operación Upsert

A continuación, tenemos un caso del operador $ Setoninsert donde el documento coincide y modifica, pero no hay resultados Upsert. Proporcionamos la consulta donde actualizamos el documento utilizando el método Update (). El método update () se implementa aún más con la operación donde se asigna primero la expresión y el campo "ID" tiene el valor de "1". Después de eso, invocamos el operador $ set para modificar los campos especificados y el operador $ setoninsert para establecer el campo "Nombre" con el nuevo valor que es "Alex". El valor verdadero de Upsert se asigna después del operador $ setoninsert.

db.Colección de trabajadores.actualizar(
id: 1,

$ set: salario: 60000, altura: 4.98,
$ setoninsert: nombre: "Alex"
,
Upsert: True
)

Podemos ver que la cuenta de Matched y Modified se establecen con el valor de "1". El UpSertCount tiene un valor "cero" que indica que la operación UPSERT no se realiza y el nombre de "campo" no se actualiza.


Reconocido: verdadero,
Insertedid: NULL,
MatchedCount: 1,
ModifiedCount: 1,
UpsertedCount: 0

Ejemplo 5: Uso del operador $ setoninsert para el documento emparejado

El siguiente es el funcionamiento del operador $ Setoninsert para verificar si este operador funciona correctamente con el documento de coincidencia. El operador $ setoninsert no es efectivo con los documentos ya existentes. Tengamos la siguiente consulta donde tenemos el operador $ Setoninsert dentro del método Update (). El operador $ setoninsert establece los campos integrados, "ciudad" y "teléfono", con el valor que ya está presente en el documento. Aquí, la operación Upsert simplemente ignora el operador $ setoninsert porque los valores especificados ya están ubicados en el documento.

db.Colección de trabajadores.Actualización ("Nombre": "Kevin",
$ setoninsert: "detalles.Ciudad ":" Houston ",
"Detalles.Teléfono ":" 8329423099 ",
upsert: true)

Los resultados acaban de reconocer el documento emparejado. La operación de Upsert falló en este caso como se ve en el siguiente:


Reconocido: verdadero,
Insertedid: NULL,
MatchedCount: 1,
ModifiedCount: 0,
UpsertedCount: 0

Conclusión

Demostramos sobre el operador MongoDB $ Setoninsert. Aprendimos a usar este operador con consultas MongoDB. El operador $ setoninsert se aplica dentro del método update () para aumentar el documento nuevo o especificado. La posible ilustración de casos se proporciona en este artículo en el que insertamos el nuevo documento y el nuevo documento integrado con la ayuda del operador $ Setoninsert. Después de eso, llamamos al operador $ Setoninsert para actualizar el documento ya presente y el documento coincidente.