Diferencia entre $ push y $ addToSet en MongoDB

Tahseen Tauseef 15 febrero 2024
  1. Operadores en MongoDB
  2. Operador $push en MongoDB
  3. $addToSet en MongoDB
Diferencia entre $ push y $ addToSet en MongoDB

Este artículo explica qué operadores hay en MongoDB. Para qué sirven los operadores $push y $addToSet.

Además, la diferencia entre estos dos operadores se da con segmentos de código. En este artículo se tratan los siguientes temas.

  1. Operadores en MongoDB
  2. $push en MongoDB
  3. $addToSet en MongoDB

Operadores en MongoDB

Los operadores son símbolos especiales o palabras clave que informan a un compilador o intérprete para realizar operaciones matemáticas o lógicas.

Los operadores de consulta mejoran la funcionalidad de MongoDB al permitir que los desarrolladores creen consultas complejas para interactuar con conjuntos de datos que coincidan con sus aplicaciones.

A continuación se explican los diferentes tipos de operadores en MongoDB.

  1. Operadores de consulta y proyección: los operadores de consulta ayudan a descubrir datos en una base de datos, mientras que los operadores de proyección alteran la forma en que se muestran los datos.
  2. Operadores de actualización: los operadores de actualización le permiten cambiar o agregar datos a su base de datos.
  3. Etapas de canalización de agregación: etapas de agregación disponibles para canalización de agregación.
  4. Operadores de canalización de agregación: las operaciones de canalización de agregación tienen una colección de operadores disponibles para definir y manipular documentos en etapas de canalización.
  5. Modificadores de consultas: los modificadores de consultas determinan cómo se ejecutarán las consultas.

Operador $push en MongoDB

El operador $push en MongoDB se usa para adjuntar un valor dado a una matriz. Un tipo de operador de actualización es el operador $push.

Si el campo designado no está presente en el documento a actualizar, el operador $push lo agrega como un nuevo campo con el valor especificado como su elemento. La operación falló si el campo de actualización no era del tipo matriz.

Si el valor es una matriz, el operador $push agrega la matriz completa como un solo elemento al actualizar. Si desea agregar cada elemento de valor de forma independiente, utilice el operador $push con el modificador $each.

Sintaxis:

db.collection.update( <query>,{ $push: { <field>: <value> } })

La siguiente colección de bases de datos se utilizará en todos los ejemplos.

Coleccion de muestra:

db={
  "student": [
    {
      "_id": 1,
      "sem": 1,
      "subjects": [
        "phys",
        "chem",
        "maths",
        "gkn",
        "stat",
        "astro"
      ],
      "achieve": [
        70,
        87,
        90,
        90,
        65,
        81
      ]
    }
  ]
}

Ejemplo del operador MongoDB $push

Si desea agregar 95 al campo de matriz completado cuando la condición sujetos es "matemáticas", podemos usar el comando MongoDB a continuación.

db.student.update( { "subjects" : "maths" },{ $push: { "achieve": 95 } });

Debido a que el criterio descrito en el ejemplo anterior coincide con esta acción, el valor 95 se agregará a la matriz realizada.

Para ver el documento recién actualizado:

db.student.find().pretty();

El resultado de la consulta anterior se puede ver en esta captura de pantalla.

operador de inserción mongodb

Ejemplo de MongoDB $push cuando el campo no es una matriz

Si desea agregar 2 a la columna sem, que no es un campo de tipo matriz, podemos usar el comando MongoDB a continuación.

db.student.update( { "subjects" : "maths" },{ $push: { "sem": 2 } });

Debido a que el campo sem en el ejemplo anterior no es del tipo matriz, la operación fallará y producirá el siguiente resultado.

Cannot apply $push/$push All modifier to non-array

Ejemplo de MongoDB $push usando modificadores $each

Si queremos agregar muchas entradas o más de un elemento (77,49,83) a la matriz realizada para el estudiante documentado donde la condición sujetos es "matemáticas", podemos usar el comando MongoDB a continuación.

db.student.update( { "subjects" : "maths" },{ $push: { "achieve": {$each : [77,49,83 ]} } });

El modificador $each se usó en el ejemplo anterior para agregar varias entradas 77,49,83 a la matriz cumplida que coincide con el tema de criterio "matemáticas".

Para ver el documento recién actualizado:

db.student.find().pretty();

El resultado de la consulta anterior se puede ver en esta captura de pantalla.

empujar el operador con cada

$addToSet en MongoDB

El operador $addToSet solo agrega o agrega un valor a una matriz si el valor aún no existe en la matriz. Cuando el valor ya está en la matriz, $addToSet devuelve la misma matriz sin alterarla.

El operador $addToSet asegura que no haya entradas duplicadas en una matriz cuando se actualiza; sin embargo, el orden de los elementos en una pantalla se puede modificar después de agregar un valor.

Sintaxis:

db.collection.update( { <field>: <value> }, { $addToSet: { <field>: <addition> } } );

Colección utilizada anteriormente:

 { "_id" : 1, "sem" : 1, "achieve" : [  80,  70,  90 ] }

Ejemplo de $addToSet para agregar un valor

Si queremos agregar el valor 92 a la matriz, podemos usar el comando MongoDB a continuación.

db.student.update( { "sem": 1}, { $addToSet: { "achieve": 92 } } );

El código anterior agregará 92 al campo de la matriz.

Para ver el documento recién actualizado:

db.student.find().pretty();

Salida del comando:

{ "_id" : 1, "achieve" : [ 70, 80, 90, 92 ], "sem" : 1 }

Ejemplo de $addToSet para agregar valor múltiple usando el modificador $each

El siguiente comando de MongoDB puede agregar los números 10 y 11 al campo de la matriz.

db.student.update( { "sem": 1}, { $addToSet: { "achieve":{$each:[10,11]}}});

En el ejemplo anterior, los números 10 y 11 se adjuntaron al campo de matriz logrado usando el modificador $each.

Para ver el documento recién actualizado:

db.student.find().pretty();

El resultado de la consulta anterior se puede ver en esta captura de pantalla.

operador agregar al conjunto

Artículo relacionado - MongoDB Operator