Update Collection en Python MongoDB

Para actualizar documentos en MongoDB desde Python, puedes utilizar el método update_one() o update_many() según necesites actualizar un solo documento o varios documentos que coincidan con un criterio específico.


Cómo hacer un Update con Python en MongoDB paso a paso

A continuación se muestra paso a paso como actualizar registros con la sentencia Update en MongoDB con Python.

Importa la biblioteca

tienes que importar la biblioteca pymongo:

import pymongo

Conexión con la base de datos

Establece la conexión con la base de datos:

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["tu bbdd"]
mycol = mydb["Clientes"]

Actualizar un solo documento

Actualiza un solo documento usando update_one():

# Crea un filtro para seleccionar el documento que deseas actualizar (por ejemplo, por _id)
filtro = {"_id": ObjectId("id_del_documento_a_actualizar")}

# Crea una actualización con los campos y valores que deseas cambiar
actualizacion = {"$set": {"campo_a_actualizar": "nuevo_valor"}}

# Actualiza el documento
mycol.update_one(filtro, actualizacion)

Actualiza varios documentos

Actualiza varios documentos usando update_many():


# Crea un filtro para seleccionar el documento que deseas actualizar (por ejemplo, por _id)
filtro = {"_id": ObjectId("id_del_documento_a_actualizar")}

# Crea una actualización con los campos y valores que deseas cambiar
actualizacion = {"$set": {"campo_a_actualizar": "nuevo_valor"}}

# Actualiza los documentos que coincidan con el filtro
mycol.update_many(filtro, actualizacion)

Recuerda que necesitas tener instalada la biblioteca pymongo para poder utilizar MongoDB desde Python. Además, asegúrate de que la conexión a tu servidor de MongoDB sea correcta y que tengas los permisos adecuados para realizar las actualizaciones.


Ejemplo para actualizar un documento

Aquí puedes consultar un ejemplo completo sobre como actualizar un solo documento utilizando el método update_one().

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["tu bbdd"]
mycol = mydb["Clientes"]

myquery = { "dirección":"C/Mayor, 1"}
newvalues = { "$set": { "direccion": "C/Arriba, 5" } }

mycol.update_one(myquery, newvalues)

#print "clientes" después del update:
for x in mycol.find():
  print(x)

Ejemplo para actualizar varios documentos

Para actualizar todos los documentos que cumplan con los criterios de la consulta, use el método update_many().

Actualice todos los documentos donde la dirección comience con la letra "S":

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:12345/")
mydb = myclient["tu bbdd"]
mycol = mydb["clientes"]

myquery = { "direccion": { "$regex": "^S" } }
newvalues = { "$set": { "nombre": "Manuel" } }

x = mycol.update_many(myquery, newvalues)

print(x.modified_count, "archivos actualizados")