Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Update Documents

En esta guía, puedes aprender cómo usar PyMongo para actualizar documentos en una colección de MongoDB utilizando los métodos update_one() o update_many().

Los ejemplos en esta guía utilizan la colección sample_restaurants.restaurants de los conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consultar el tutorial Comenzar con PyMongo.

Puedes realizar operaciones de actualización en MongoDB utilizando los siguientes métodos:

  • update_one()que actualiza el primer documento que coincide con los criterios de búsqueda

  • update_many(), que actualiza todos los documentos que coinciden con los criterios de búsqueda

Cada método de actualización requiere los siguientes parámetros:

  • Un documento de filtro de query, que determina qué documentos actualizar. Para obtener más información sobre los filtros de query, consulta la sección Documentos de Filtros de Query en el manual del MongoDB Server.

  • Un documento de actualización, que especifica el operador de actualización (el tipo de actualización a realizar) y los campos y valores que deben cambiar. Para obtener una lista de los operadores de actualización y su uso, consulta la página de la guía de Operadores de actualización de campos en el manual de MongoDB Server.

El siguiente ejemplo utiliza el método update_one() para actualizar el valor name de un documento llamado "Bagels N Buns" en la colección restaurants. Selecciona la pestaña Synchronous o Asynchronous para ver el código correspondiente:

restaurants = database["restaurants"]
query_filter = {'name' : 'Bagels N Buns'}
update_operation = { '$set' :
{ 'name' : '2 Bagels 2 Buns' }
}
result = restaurants.update_one(query_filter, update_operation)
restaurants = database["restaurants"]
query_filter = {'name' : 'Bagels N Buns'}
update_operation = { '$set' :
{ 'name' : '2 Bagels 2 Buns' }
}
result = await restaurants.update_one(query_filter, update_operation)

El siguiente ejemplo utiliza el método update_many() para actualizar todos los documentos con un valor cuisine de "Pizza". Después de la actualización, los documentos tienen un valor de cuisine de "Pasta". Selecciona la pestaña Synchronous o Asynchronous para ver el código correspondiente:

restaurants = database["restaurants"]
query_filter = {'cuisine' : 'Pizza'}
update_operation = { '$set' :
{ 'cuisine' : 'Pasta' }
}
result = restaurants.update_many(query_filter, update_operation)
restaurants = database["restaurants"]
query_filter = {'cuisine' : 'Pizza'}
update_operation = { '$set' :
{ 'cuisine' : 'Pasta' }
}
result = await restaurants.update_many(query_filter, update_operation)

Los métodos update_one() y update_many() aceptan opcionalmente parámetros adicionales, que representan opciones que puedes usar para configurar la operación de actualización. Si no especifica opciones adicionales, el driver no personaliza la operación de actualización.

Propiedad
Descripción

upsert

Especifica si la operación de actualización realiza una operación de inserción/actualización si ningún documento coincide con el filtro de consulta. Para obtener más información, consulte la instrucción `upsert` en el manual del servidor MongoDB. El
valor predeterminado es.False

bypass_document_validation

Especifica si la operación de actualización omite la validación del documento. Esto permite actualizar documentos que no cumplen con los requisitos de validación del esquema, si los hubiera. Para obtener más información sobre la validación del esquema, consulte Validación de esquema en el manual del servidor MongoDB.
El valor predeterminado False es.

collation

Especifica el tipo de intercalación de lenguaje que se debe usar al clasificar los resultados. Consulte intercalación para obtener más información.

array_filters

Una lista de filtros que especifica a qué elementos de un arreglo se les aplica una actualización.

hint

Obtiene o define el índice para escanear documentos. Para obtener más información, consulta la instrucción de sugerencia en el manual del MongoDB Server.

session

Una instancia de ClientSession.

let

Un mapa de nombres y valores de parámetros. Los valores deben ser constantes o expresiones cerradas que no referencien los campos del documento. Para más información, vea la instrucción let en el manual de MongoDB Server.

comment

Un comentario para adjuntar a la operación. Para más información, consulta la guía insertar campos de comandos en el manual de MongoDB Server para obtener más información.

El siguiente código utiliza el método update_many() para encontrar todos los documentos donde el campo borough tenga el valor "Manhattan". Luego actualiza el valor borough en estos documentos a "Manhattan (north)". Debido a que la opción upsert está configurada en True, PyMongo inserta un nuevo documento si el filtro de query no coincide con ningún documento existente. Selecciona la pestaña Synchronous o Asynchronous para ver el código correspondiente:

restaurants = database["restaurants"]
query_filter = {'borough' : 'Manhattan'}
update_operation = { '$set' :
{ 'borough' : 'Manhattan (north)' }
}
result = restaurants.update_many(query_filter, update_operation, upsert = True)
restaurants = database["restaurants"]
query_filter = {'borough' : 'Manhattan'}
update_operation = { '$set' :
{ 'borough' : 'Manhattan (north)' }
}
result = await restaurants.update_many(query_filter, update_operation, upsert = True)

Cuando realices una operación de actualización, puedes especificar una intercalación que el controlador debe utilizar.

Una intercalación es un conjunto de reglas específicas del lenguaje para la comparación de strings, como el uso de mayúsculas y minúsculas y las marcas de acento.

Para especificar una intercalación, crear una instancia de la clase Collation o un diccionario de Python. Para una lista de opciones que pueda pasar al constructor Collation o incluir como claves en el diccionario, consultar Intercalación en el manual de MongoDB Server.

Tip

Intercalación de importación

Para crear una instancia de la clase Collation, se debe importar desde pymongo.collation.

El siguiente ejemplo realiza la misma operación de actualización que el ejemplo anterior, pero con una intercalación predeterminada de fr_CA. Selecciona la pestaña Synchronous o Asynchronous para ver el código correspondiente:

from pymongo.collation import Collation
restaurants = database["restaurants"]
query_filter = {'cuisine' : 'Pizza'}
update_operation = { '$set' :
{ 'cuisine' : 'Pasta' }
}
result = restaurants.update_many(query_filter, update_operation,
collation=Collation(locale='fr_CA'))
from pymongo.collation import Collation
restaurants = database["restaurants"]
query_filter = {'cuisine' : 'Pizza'}
update_operation = { '$set' :
{ 'cuisine' : 'Pasta' }
}
result = await restaurants.update_many(query_filter, update_operation,
collation=Collation(locale='fr_CA'))

Nota

La intercalación de operaciones anula la por defecto

Cuando se especifica una intercalación como parte de una operación, esta anula la intercalación por defecto de la colección.

Los métodos update_one() y update_many() devuelven cada uno un objeto UpdateResult. El UpdateResult tipo contiene las siguientes propiedades:

Propiedad
Descripción

matched_count

El número de documentos que coincidieron con el filtro de query, independientemente de cuántos se actualizaron.

modified_count

El número de documentos que han sido modificados durante la operación de actualización. Si un documento actualizado es idéntico al original, no se incluye en este recuento.

raw_result

El documento de resultado sin procesar devuelto por el servidor.

upserted_id

El ID del documento que se actualizó en la base de datos, si el driver realizó una inserción. De lo contrario, None.

Para obtener más información sobre cómo crear filtros de query, se puede consultar la Especificar una query.

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: