MongoDB: todos los operadores posicionales ($[])

MongoDB proporciona diferentes tipos de operadores de actualización de arrays para actualizar los valores de los campos de la array en los documentos y todos los operadores posicionales ($[]) son uno de ellos. Este operador indica que la operación de actualización debe modificar todos los elementos presentes en el campo de array especificado. Sintaxis: 

{ <update operator>: { "<array>.$[]" : <value> } }
  • También puede usar este operador para aquellas consultas que atraviesan más de una array y arrays anidadas.
  • Si upsert se establece en verdadero, la consulta debe contener una coincidencia de igualdad exacta en el campo de la array para usar el operador $[] en la declaración de actualización. Si la operación upsert no incluye la coincidencia de igualdad exacta en el campo de la array, entonces upsert dará un error.
  • Puede utilizar el operador $[] con los métodos update(), findAndModify(), etc., para modificar todos los elementos de la array del documento o documentos que coincidan con la condición de consulta especificada.

En los siguientes ejemplos, estamos trabajando con: 

Base de datos: GeeksforGeeks 

Colección: colaborador 

Documento: dos documentos que contienen los detalles del contribuyente en forma de pares de campo-valor.

Actualización de todos los elementos en una array:

En este ejemplo, estamos actualizando incrementando todos los elementos por 10 del campo de puntos. 

Python3

db.contributor.update({}, {$inc: {"points.$[]": 5}}, {multi: true})

Actualizando todos los documentos en la array:

En este ejemplo, estamos actualizando al disminuir el valor del campo tArtículos en -10 para todos los elementos de la array de artículos. 

Python3

db.contributor.update({}, {$inc: {"articles.$[].tArticles": -10}},
                           {multi: true})

Actualización de una array mediante un operador de consulta de negación:

En este ejemplo, estamos incrementando todos los elementos de la array de puntos en 20 para todos los documentos excepto aquellos con el valor 100 en la array de puntos. 

Python3

db.contributor.update({points: {$ne: 25}},
                      {$inc: {"points.$[]": 20}},
                        {multi: true})

Actualización de la array anidada junto con $[<identificador>]:

En este ejemplo, estamos actualizando todos los valores que son menores o iguales a 80 en la array de marcas anidadas.primer semestre. 

Python3

db.contributor.update({}, {$inc: {"marks.$[].firstsemester.$[newmarks]": 3}},
                            {arrayFilters: [{newmarks: {$lte: 80}}], multi: true})

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 *