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")