MongoDB – Operador $push

MongoDB proporciona diferentes tipos de operadores de actualización de array para actualizar los valores de los campos de array en los documentos y el $push operador es uno de ellos. Este operador se usa para agregar un valor específico a una array.

Sintaxis:

{ $push: { <field1>: <value1>, ... } }

Aquí, <field> puede especificar con notación de puntos en documentos incrustados/anidados o en una array.

  • Si el campo especificado en el $push operador no está presente en el documento, este operador agregará el campo de array con el valor como sus elementos.
  • El $push operador inserta elementos al final de la array.
  • Si el campo especificado en el $pushoperador no es una array, esta operación fallará.
  • Si el valor del $pushoperador es una array, este operador agregará toda la array como un solo elemento. Y si desea agregar cada elemento del valor por separado, puede usar el modificador $cada uno con el $push operador.
  • Puede usar este operador con métodos como update(), findAndModify(), etc., según sus requisitos.

También podemos usar los siguientes modificadores con el operador $push:
Sintaxis:

{ $push: { <field1>: { <modifier1>: <value1>, ... }, ... } }

El procesamiento de la operación push con modificadores funciona en el siguiente orden:

  • Primero actualice la array para agregar elementos en la posición correcta.
  • En segundo lugar, aplique ordenar si se especifica.
  • En tercer lugar, corte la array si se especifica.
  • Cuarto almacene la array.

Nota: Aquí no importa el orden en que aparecen los modificadores en el operador $push.

modificador Descripción
$cada uno Se utiliza para agregar múltiples valores al campo de la array.
$rebanada Se utiliza para limitar el número de elementos de la array y requiere el uso del modificador $each.
$clasificar Se utiliza para ordenar elementos del arreglo y requiere el uso del modificador $each.
$posicion Se utiliza para especificar la ubicación en la array en la que insertar los elementos nuevos y requiere el uso del modificador $each. Si el operador $push no usa el modificador $position, este operador agregará los elementos al final de la array.

En los siguientes ejemplos, estamos trabajando con:

Base de datos: GeeksforGeeks
Colección: colaborador
Documento: dos documentos que contienen los detalles del colaborador en forma de pares de valor de campo.

Agregar un solo valor a una array:

En este ejemplo, agregamos un solo valor, es decir, «C++» a un campo de array, es decir, un campo de idioma en el documento que cumple la condición (nombre: «Rohit»).

db.contributor.update({name: "Rohit"}, {$push: {language: "C++"}})

Agregar múltiples valores a una array:

En este ejemplo, agregamos varios valores, es decir, [“C”, “Ruby”, “Ir”] a un campo de array, es decir, un campo de idioma en el documento que cumple la condición (nombre: “Sumit”).

db.contributor.update({name: "Sumit"}, {$push: {language: {$each: ["C", "Ruby", "Go"]}}})

Agregar múltiples valores a una array en el documento anidado/incrustado:

En este ejemplo, agregamos varios valores, es decir, [89, 76.4] a un campo de array, es decir, el campo personal.semesterMarks de un documento anidado/incrustado.

db.contributor.update({name: "Sumit"}, 
                      {$push: {"personal.semesterMarks": {$each: [89, 76.4]}}})

Uso de modificadores con el operador $push:

En este ejemplo, estamos usando múltiples modificadores como $each, $sort y $slice con el operador $push.

db.contributor.update({name: "Rohit"},
                      {$push: { language: { $each: ["C", "Go"],
                                $sort: 1, $slice: 4}}})

Aquí,

  • El modificador $each se usa para agregar varios documentos a la array de idioma.
  • El modificador $sort se usa para ordenar todos los elementos de la array de idioma modificada en forma ascendente.
  • El modificador $slice se usa para mantener solo los primeros cuatro elementos ordenados de la array de idioma.

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 *