Actualizar un documento con Pymongo

06/Jun/2016 Python , Deja un comentario

Ya hemos insertado y consultado documentos con Pymongo, en este ejemplo vamos a ver cómo podemos actualizar un documento con Pymongo.

Lo primero de todo importar la librería Pymongo en nuestro programa

  1. from pymongo import MongoClient
  2.  
  3. client = MongoClient()

Mediante el MongoClient vamos a establecer la conexión con la base de datos MongoDB. Una vez establecida deberemos de seleccionar qué base de datos y colección vamos a utilizar.

  1. db = client.test
  2. users = db.users

En el código podemos comprobar que la base de datos a utilizar es test y que la colección se llama users.

Para poder atualizar un documento con Pymongo tenemos dos alternativas, por un lado está el actualizar el primer documento de la colección que coincida con la buscado, para este caso tenemos el método update_one() o bien actualizar todos los documentos de la colección que coincidan con la estructura buscada, en este caso deberemos de utilizar el método update_many()

La estructura de ambos métodos es la siguiente:

  1. coleccion.update_one(documento_buscado,operador_actualizacion)

Lo primero será crear un documento que contenga los datos mínimos de los documentos a actualizar. Por ejemplo, queremos actualizar a todas las personas que tengan una edad de 30 años. En este caso el documento será:

  1. doc = {
  2. edad: 30
  3. }

O bien podemos querer actualizar todos aquellos documentos de personas que tengan 30 años y que se llamen 'Pilar'.

  1. doc = {
  2. edad: 30,
  3. 'nombre': 'Pilar'
  4. }

Podemos añadir los atributos que deseemos en el documento de búsqueda.

El segundo atributo de los métodos update_one() y update_one() deberá de ser un documento que contenga un operador de actualización: $set, $pull, $push,...

Este operador de actualización añadirá, actualizará o eliminará información de alguna de las propiedades del documento.

Por ejemplo, si queremos actualizar la propiedad edad, antes buscada, e indicar que ahora la edad es 31, escribiremos lo siguiente:

  1. {"$set": {"edad":31}})

Ya solo nos quedará ejecutar los métodos update_one() o update_many.

  1. esultado = users.update_many(olduser,{"$set": {"edad":31}})

En la variable resultado queda información relativa al resultado obtenido, en concreto nos deja la variable modified_count con el número de documentos que se han actualizado.

Podemos ver el efecto de actualizar un documento con Pymongo escribiendo:

  1. print 'Numero de documentos modificados ' + str(resultado.modified_count)

Vídeos sobre Python


Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*