Uso de operadores de Push & Pull en MongoDB

Uso de operadores de Push & Pull en MongoDB

  • Orquestación
6 min de lectura Actualizado Dec 3, 2020

Puntos clave: Los operadores push y pull en MongoDB son utilizan para modificar arrays dentro de documentos añadiendo o eliminando elementos. El operador $push añade valores, mientras que el operador $pull elimina elementos basándose en condiciones específicas. Esta guía explica su sintaxis, uso y modificadores como $each, $sort y $position, proporcionando ejemplos prácticos para los usuarios.

  • $push añade valores a los arrays y puede Crea nuevos arrays si no existe.
  • $pull elimina valores especificados de los arrays según las condiciones.

Los operadores de $push y $pull son parte de los operadores de arrays diseñados para modificar arrays en documentos de MongoDB. En este tutorial, mostraré te cómo funcionan los operadores push y pull y cómo utiliza los con modificadores y condiciones adicionales.

¿Qué son los operadores de tira y apur?

Push y Pull son las dos operaciones utilizadas para añadir y eliminar elementos de arrays en documentos de MongoDB. El push y el pull de elementos son hacen usando los operadores de $push y $pull de MongoDB, respectivamente:

  • El operador $push añade un valor especificado a un array.
  • El operador $pull elimina valores de un array que coincide con una condición especificada.

Sintaxis básica del operador $push

    { $push: { : , ... } }

Sintaxis básica del operador $pull

    { $pull: { : , ... } }

Veamos cada uno con más detalle, incluyendo cómo funcionan y cómo te pueden utiliza ellos.

Cómo funciona el operador de $push MongoDB

te puede Ve el operador $push toma dos argumentos:

  • El campo de la matriz
  • El valor que se añadirá al campo del array especificado

Si el campo del array no están presente en el documento, el operador de $push Crea un nuevo campo de array. Sin embargo, si el campo especificado no están un array, MongoDB devolverá un error.

$push modificadores de operadores

La funcionalidad del operador de $push puede ampliarse aún más usando los siguientes modificadores.

  • $each. El modificador de $each están utiliza para añadir múltiples valores a un array. Si el operador de $each no están especificado, todos los valores del operador de $push se añadirán como un solo elemento al campo del array en el documento.
  • $slice. Esto limita el número de elementos en el arreglo. Sin embargo, esto debe usarse junto con el modificador $each.
  • $sort. El modificador de $sort ordena los objetos del array. Este modificador también requiere el utiliza de $each modificador.
  • $position. El operador $push añade por defecto un nuevo elemento al final de un array. utiliza el modificador de $position si te quieres especificar explícitamente la ubicación donde debe añadirse el elemento.

La operación de $push están realiza en el siguiente orden, independientemente del orden en que son se definan los modificadores:

  1. Actualiza el array para añadir elementos en las posiciones especificadas.
  2. Ordena el array si $sort modificador están especificado.
  3. Corta el array si están modificador $slice especificado.
  4. Almacena el array.

A continuación, veremos cómo podemos utiliza operaciones de $push MongoDB para manipular documentos. Mostraré algunos ejemplos, así que vamos al que te necesitamos:

Para el conjunto de datos base de estos ejemplos, utilizaré la colección "vehicledetails".

    db.vehicledetails.find().pretty()

Resultado:

Añadir un solo valor a un array

Veamos Ve cómo podemos añadir un solo valor a un array cuando un campo de array están presente y no está. En todos los ejemplos, el campo "_id" están usa para indicar qué documento debe añadirse el array. Ejemplo: Sin campo de array Se creará un nuevo campo de array con el nombre del campo especificado en el operador $push.

    db.vehicledetails.update({"_id": ObjectId("5fbc52f05f9a62418038240d")}, {$push: {"vehicle_colours": "red"}})

Resultado:

Ejemplo: Cuando el campo del array está presente, el nuevo elemento se añadirá al final del array.

    db.vehicledetails.update({"_id": ObjectId("5fbc52f05f9a62418038240d")}, {$push: {"vehicle_colours": "green"}})

Resultado:

Si intentamos utiliza el operador $push para un campo que no es del array, se producirá un error. El siguiente código devuelve un error mientras son intentamos añadir un valor al campo no arrayado "Haz".

    db.vehicledetails.update({"_id": ObjectId("5fbc52f05f9a62418038240d")}, {$push: {"make": "green"}})

Resultado:

Añadir múltiples valores a un array

te pueden añadir múltiples valores a un array con o sin modificador $each. Ejemplo: Múltiples valores sin modificador $each Si el modificador de $each no están presente, MongoDB añadirá todos los valores como un solo valor al campo especificado del array.

    db.vehicledetails.update({"_id": ObjectId("5fbc52f55f9a62418038240e")}, {$push: {"vehicle_colours": ["blue", "red", "yellow"]}})

Resultado:

Aquí, te pueden Ve elementos "azul", "rojo" y "amarillo" son de un array recién creado. Pero ese array están solo un elemento del array "vehical_colours". Ejemplo: Múltiples valores con modificador $each Cuando una operación de $push están define con el modificador de $each, cada elemento de la operación de $push se añade al array como elementos individuales.

    db.vehicledetails.update({"_id": ObjectId("5fbc52f55f9a62418038240e")}, {$push: {"vehicle_colours": { $each :["blue", "red", "yellow"]}}})

Resultado:

Aquí, "vehicle_colours" tiene tres elementos tras $push operación.

Uso de los modificadores $sort y $slice

En esta sección, demostraremos cómo utiliza los modificadores de $sort y $slice utilizando el siguiente documento de la colección "detalles del vehículo".

Añadamos el color "plateado" al campo del array "vehicle_colours" y ordenemos el contenido alfabéticamente (orden ascendente).

    db.vehicledetails.update({"_id": ObjectId("5fbc52fb5f9a62418038240f")}, {$push: {"vehicle_colours": { $each :["silver", "orange"], $sort: 1}}})

Resultado:

La salida anterior nos muestra que se añadieron los nuevos colores y que el array se ha ordenado alfabéticamente. En el siguiente ejemplo, añadiremos el color "azul oscuro" al campo del array mientras ordenamos alfabéticamente y usamos el modificador $slice para limitar el array a 5 elementos.

    db.vehicledetails.update({"_id": ObjectId("5fbc52fb5f9a62418038240f")}, {$push: {"vehicle_colours": { $each :["dark blue"], $sort: 1, $slice: 5}}})

Resultado:

Uso del modificador $position

El modificador $position están usa para especificar la ubicación en el array donde debe añadirse el nuevo elemento. Esto anulará el comportamiento por defecto de añadir los elementos al final del array. En el siguiente ejemplo, añadiremos el color "white" al inicio del campo del array "vehicle_colours". En el modificador "$position", cero (0) están usado para indicar la primera posición (índice 0) del array.

    db.vehicledetails.update({"_id": ObjectId("5fbc52fb5f9a62418038240f")}, {$push: {"vehicle_colours": { $each :["white"], $position: 0}}})

Resultado:

Cómo funciona el operador de $pull de MongoDB

El operador $pull están utiliza para eliminar todas las instancias de un valor o valores de un documento MongoDB que coincidan con una condición especificada. Si un array contiene documentos incrustados o anidados, la condición de operador de $pull especificada se aplicará a cada elemento del array como si cada elemento del array fuera un documento de una colección. Cuando el valor especificado a eliminar están un array, el operador $pull solo elimina los elementos del array que coinciden con el valor exacto especificado, incluido el orden en que son definen los elementos. Si el valor especificado para eliminar están un documento, el operador $pull eliminará elementos que coincidan con los campos y valores especificados. En este caso, el orden de los campos están descartados. Ahora te voy a repasar algunos ejemplos del operador de $pull. Vamos a los que te necesitamos:

En estos ejemplos, utiliza el siguiente conjunto de datos para demostrarlo:

Eliminar un solo elemento de un array

Aquí, eliminaremos el valor único "2018" del campo del array "model_year". El campo "_id" están utiliza para indicar el documento sobre el que debe realizarse la operación de $pull.

    db.vehicledetails.update({"_id": ObjectId("5fbc52fb5f9a62418038240f")}, {$pull: {"model_year": 2018}})

Resultado:

Elimina todos los elementos que tengan un valor especificado

En este ejemplo, usaremos la colección "vehicledetails" para eliminar los colores "azul" y "verde" del campo del array "vehicle_colours" y eliminar el año modelo 2020 del campo del array "model_year".

    db.vehicledetails.update({}, {$pull: {"vehicle_colours": { $in: ["blue", "green"]}, "model_year": 2020}},{multi: true})

Resultado:

Elimina los elementos que cumplan con una condición $pull especificada

Usando la colección "student_grades", pongamos Crea una condición para eliminar todas las calificaciones que son igual o menores que 50 del siguiente documento. Documento sin modificaciones:

Documento modificado:

    db.student_grades.update({"_id" : ObjectId("5fbed0faa94306028d2d7520")}, {$pull: {"grades": {$lte: 50}}})

Resultado:

La condición especificada ({$lte: 50}) eliminaba cualquier elemento que están menor o igual a 50 en el campo del array "grades".

Eliminar elementos de una serie de documentos

En este ejemplo, utiliza la colección "student_grades" elimine todos los valores que son igual o menores que 50 en el campo del array "grades" de todos los documentos de la colección. Colección sin modificaciones:

Colección modificada:

    db.student_grades.update({}, {$pull: {"grades": {$lte: 50}}},{multi: true})

Resultado:

La salida anterior nos demuestra que cualquier valor que están menor o igual a 50 ha sido eliminado del campo del array "grades" en todos los documentos de la colección "student_grades". Con esto concluye este tutorial.

Lecturas relacionadas

Guía de MongoDB

  1. Resumen de MongoDB: Empezando con MongoDB
  2. Cómo instalar MongoDB en Ubuntu y Mac
  3. Creación de una base de datos en MongoDB
  4. Comandos básicos de MongoDB Shell
  5. MongoDB Compass: Uso de la interfaz gráfica de Mongo
  6. Explicación del Control de Acceso Basado en Roles (RBAC) de MongoDB
  7. Explicación de los operadores de proyección y proyección de MongoDB
  8. Explicación de las funciones agregadas de MongoDB
  9. Ordenación de MongoDB: método y ejemplos de sort()
  10. Uso de operadores de Push & Pull en MongoDB
  11. Cómo utiliza MongoDB $unwind
  12. 23 operadores comunes de consultas de MongoDB y cómo utilizarlos
  13. Ejemplos de consultas de geolocalización de MongoDB
  14. Introducción a las transacciones de MongoDB
  15. Índices de MongoDB: Principales tipos de índices y cómo gestionarlos
  16. Mejores comandos de MongoDB te necesitas saber
  17. Replicación de MongoDB: Una introducción completa
  18. Cómo configurar un clúster de MongoDB
  19. Fragmentos de MongoDB: Conceptos, Ejemplos y Tutoriales
  20. MongoDB Atlas: Configuración y uso de MongoDB gestionado
  21. Cómo ejecutar MongoDB como contenedor Docker
  22. Uso, gestión y requisitos de memoria de MongoDB
  23. Cómo utilizar Mongodump para copias de seguridad de MongoDB
  24. Ejemplos de Mongorestore para restaurar copias de seguridad de MongoDB
  25. Cómo utilizar PyMongo
  26. Cómo utilizar Mongoose para MongoDB y NodeJS
  27. Chuletas de MongoDB
  28. MongoDB vs Cassandra: Comparación de bases de datos NoSQL
  29. PostgreSQL vs MongoDB: Comparando bases de datos
  30. MySQL vs MongoDB: Comparando bases de datos
  31. Certificaciones MongoDB: Una introducción

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de Orquestación

¿Te interesa saber más de BMC?

El Brief están nuestro correo mensual sobre el mainframe y la orquestación empresarial: investigación, historias de clientes, noticias de productos, eventos.

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Tú te has suscrito a The Brief

El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.