Del curso: MongoDB esencial
Operadores de actualización de arrays - Tutorial de MongoDB
Del curso: MongoDB esencial
Operadores de actualización de arrays
Los operadores de actualización se utilizan dentro del segundo argumento de los métodos de actualización. Estos métodos pueden ser «updateOne», «updateMany» o también, como especifica aquí en la página, el método «FindAndModify». Vamos a deslizar el ratón un poco más hacia abajo y tenemos una lista con los operadores de actualización. En primer lugar, los de campo que te invito a consultar. En segundo lugar, los que vamos a ver que serían los operadores de actualización de array. Tenemos esta pequeña lista y nos muestra el operador de posición que con él vamos a actualizar el primer elemento que coincida con nuestras condiciones. Este de aquí, el operador All Positional, con él vamos a modificar todos los elementos del campo especificado. Este operador posicional con identificador, lo que vamos a hacer es identificar, en primer lugar, los elementos del array que coincidan con las condiciones y actualizarlo con las condiciones especificadas. El operador addToSet ¿qué es lo que hace? Pues con él vamos a agregar elementos en un array pero solo si no existe el valor, ¿vale?, porque si existe el valor, no va a hacer absolutamente nada. Con el operador pop vamos a eliminar el primer o último elemento de un array. Esto lo vamos a hacer pasándole un valor que puede ser 1 o -1. Si le pasamos -1, va a eliminar el primer elemento y si le pasamos 1, va a eliminar el último elemento del array. Con pull lo que vamos a hacer es eliminar todos los elementos del array que coincidan con la condición de consulta. Con push agregamos un valor especificado en el array. Y, por último, con pushAll vamos a eliminar todos los valores del array que coincidan con los valores especificados. Veamos un pequeño documento que tengo preparado con la sintaxis de cada uno. Aquí tienes el documento que te quiero mostrar con los operadores de actualización. En primer lugar, tenemos a la izquierda el operador y a la derecha tendríamos la sintaxis, cada uno de esta manera. Veamos el operador addToSet. Este operador tiene la siguiente sintaxis que sería: addToSet: y entre llaves el campo que queremos actualizar y el valor que le queremos dar a ese campo. Recuerda que si ese valor existe, este operador no hará nada. Vamos a ver un pequeño ejemplo en nuestra terminal, para ver cuál es el funcionamiento de este operador. Vamos a cerrar el documento y vamos a trabajar allá. Veamos, en primer lugar, el documento o la colección que vamos a consultar, la colección que vamos a ver, y el documento de esa colección que vamos a modificar. Lo vamos a hacer con el método find, tengo el comando preparado y lo voy a pegar. Como puedes ver, vamos a consultar la colección proveedores y quiero que me devuelva los documentos que cumplan con la condición en el que en el campo materiales tenga como valor Enchufes y cemento. Vamos a darle al Intro. Como puedes ver, nos ha devuelto dos documentos en el que hay un campo, entre otros, hay un campo que se llama «cantidades» que tiene como valor un array, en el que tiene también varios elementos. Vamos a utilizar el operador addToSet, como hemos dicho, vamos a limpiar la consola y ahora vamos a poner nuestro comando con la sintaxis que corresponde con este operador. Pego mi comando y, como ya sabes, en este campo en concreto, el campo «cantidades», tenemos varios números. Primero vamos a ver qué pasa, si el valor que le pasamos a cantidades existe ya en el documento. Sabemos que ya existe el 40, así que vamos a ejecutar este comando. Y, como puedes ver, aquí dice que, efectivamente, ha encontrado un documento y que no ha modificado nada porque ya existe el valor. Vamos a ver si ahora añadiéndole otro valor en el campo cantidades sí modifica el documento. Vamos a pegar mi comando y vamos a ejecutarlo. En este caso, al campo cantidades, vamos a pasarle 80 y vamos a ejecutarlo. Como puedes ver, ha encontrado una coincidencia, ha encontrado un documento que cumple con estas condiciones y ha modificado ese campo. Vamos a verlo de la siguiente manera. Vamos a consultar el documento con nuestro método find y, como puedes ver, ha modificado el primer documento en el campo cantidades, que antes no había 80 y ahora sí hay un 80. Veamos otro ejemplo con otro operador. De aquí de nuestra pequeña lista, por ejemplo, veamos el funcionamiento del operador «pop». Vamos a copiar la sintaxis de «pop» y la vamos a modificar en nuestra consola. Copiamos, cerramos el documento y vamos a la consola. Primero limpiamos, con cls la consola, y ahora podemos trabajar. Vamos a pegar el comando, aquí lo tenemos, que con nuestros valores queda de la siguiente manera. En este caso, el mismo documento materiales con valor Enchufes y cemento con el operador pop: y entre llaves sería, quiero que me cambies el campo cantidades y que me elimines, en este caso, el último que hemos añadido. Vamos a darle al Intro, ejecutamos y ha modificado un documento. Vamos a verlo, utilizamos el método find con el cursor pretty para poder leer el documento de manera más sencilla. Ejecutamos y, como puedes ver, ya no está en el campo cantidades el elemento, el valor 80, ¿vale?, lo hemos eliminado. Vamos a eliminar, en este caso, el primer elemento que sería 56. Lo vamos a hacer de la siguiente manera. En lugar de poner -1, limpiamos primero, pegamos el comando que ya lo tengo preparado y en lugar de 1, le vamos a poner -1. Aquí ejecutamos y ahora va a eliminar el primer elemento. Ha modificado, como puedes ver, el documento y vamos a consultarlo. Ejecutamos, aquí en cantidades ya no está el valor 56. Como puedes ver, la dinámica es muy parecida para todos los operadores. Te invito a probar el resto de los operadores y comprobar su funcionamiento.
Practica mientras aprendes con los archivos de ejercicios.
Descarga los archivos que el instructor utiliza para enseñar el curso. Sigue las instrucciones y aprende viendo, escuchando y practicando.