Python MongoDB – Consulta Update_many

MongoDB es un sistema de gestión de bases de datos NoSQL. A diferencia de MySQL, los datos en MongoDB no se almacenan como relaciones o tablas. Los datos en mongoDB se almacenan como documentos. Los documentos son objetos similares a Javascript/JSON. Más formalmente, los documentos en MongoDB usan BSON. PyMongo es una API de MongoDB para python. Permite leer y escribir datos de una base de datos MongoDB utilizando un script de python. Necesita que Python y mongoDB estén instalados en el sistema.

Actualizar_muchos()

La función de actualización ha quedado obsoleta en las versiones más recientes de MongoDB (3.xx y superiores). La función de actualización anterior podría usarse tanto para actualizaciones individuales como múltiples usando «multi = true». Pero en las versiones más nuevas de mongoDB se recomienda usar update_many() y update_one(). 

La principal diferencia es que el usuario debe planificar con anticipación si la consulta actualizará uno o varios documentos.

Sintaxis:

db.collection.updateMany(
   <filter>,
   <update>,
   {
     upsert: <boolean>,
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ],
     hint:  <document|string>
   }
)

Operadores de actualización en MongoDB

Valores de configuración:

  • $set: se usa para establecer un valor de campo.
  • $setOnInsert: valor de actualización solo si se inserta un nuevo documento.
  • $unset: elimina el campo y su valor.

Operadores numéricos:

  • $inc: aumenta el valor en una cantidad determinada.
  • $min/$max: devuelve el valor mínimo o máximo.
  • $mul: multiplica los valores por una cantidad determinada.

Operadores misceláneos:

  • $currentDate: Actualiza el valor de un campo a la fecha actual.
  • $rename : Cambia el nombre de un campo

Base de datos de muestra:

Algunos casos de uso que vamos a ver en este artículo donde actualizar muchos registros puede ser útil: 

  1. Cambiar o incrementar varios elementos en función de una condición.
  2. Insertar un nuevo campo en varios o en todos los documentos.

Ejemplo 1: Todos los alumnos con notas superiores a 35 han sido aprobados.

Python3

from pymongo import MongoClient
  
  
# Creating an instance of MongoClient 
# on default localhost
client = MongoClient('mongodb://localhost:27017')
  
# Accessing desired database and collection
db = client.gfg
collection = db["classroom"]
  
# Update passed field to be true for all
# students with marks greater than 35
collection.update_many(
    {"marks": { "$gt": "35" } },
        {
            "$set": { "passed" : "True" }
        }
)

Base de datos después de la consulta: 

Ejemplo 2: Nuevo campo llamado dirección agregado a todos los documentos

Python

from pymongo import MongoClient
  
  
# Creating an instance of MongoClient 
# on default localhost
client = MongoClient('mongodb://localhost:27017')
  
# Accessing desired database and collection
db = client.gfg
collection = db["classroom"]
  
# Address filed to be added to all documents
collection.update_many(
        {},
        {"$set":
            {
                "Address": "value"
            }
        },
    
   # don't insert if no document found
   upsert=False,
   array_filters=None
   )

Base de datos después de la consulta: 

Publicación traducida automáticamente

Artículo escrito por Aadhar Tyagi 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 *