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.
- Operadores en MongoDB
$push
en MongoDB$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.
- 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.
- Operadores de actualización: los operadores de actualización le permiten cambiar o agregar datos a su base de datos.
- Etapas de canalización de agregación: etapas de agregación disponibles para canalización de agregación.
- 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.
- 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.
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.
$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.