Docs Menu
Docs Home
/ /

Reemplazar Documentos

En esta guía, aprenderá a usar PyMongo para realizar una operación de reemplazo en un documento de una colección de MongoDB. Una operación de reemplazo funciona de forma diferente a una operación de actualización. Una operación de actualización modifica solo los campos especificados en un documento de destino. Una operación de reemplazo elimina todos los campos del documento de destino y los reemplaza por otros nuevos.

Para obtener más información sobre las operaciones de actualización, consulte la Guía de actualización de documentos.

Los ejemplos de esta guía utilizan el sample_restaurants.restaurants colección de la 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, consulta el tutorial "Comienza con PyMongo".

Puede realizar una operación de reemplazo en MongoDB con el método replace_one(). Este método elimina todos los campos excepto el campo _id del primer documento que coincida con los criterios de búsqueda. A continuación, inserta los campos y valores especificados en el documento.

El método replace_one() requiere los siguientes parámetros:

  • Un documento de filtro de consulta, que determina qué documentos reemplazar. Para más información sobre los filtros de consulta, consulte la sección "Documentos de filtro de consulta" del manual de MongoDB Server.

  • Un documento de reemplazo, que especifica los campos y valores a insertar en el nuevo documento.

El siguiente ejemplo utiliza el método replace_one() para reemplazar los campos y valores de un documento con un valor de campo name de "Pizza Town":

restaurants = database["restaurants"]
query_filter = {"name" : "Pizza Town"}
replace_document = { "name" : "Mongo's Pizza",
"cuisine" : "Pizza",
"address" : {
"street" : "123 Pizza St",
"zipCode" : "10003"
},
"borough" : "Manhattan"
}
result = restaurants.replace_one(query_filter, replace_document)

Importante

Los valores de los campos _id son inmutables. Si el documento de reemplazo especifica un valor para el campo _id, este debe coincidir con el valor _id del documento existente.

El método replace_one() acepta opcionalmente parámetros adicionales, que representan opciones que se pueden usar para configurar la operación de reemplazo. Si no se especifican opciones adicionales, el controlador no personaliza la operación de reemplazo.

Propiedad
Descripción

upsert

Specifies whether the replace operation performs an upsert operation if no documents match the query filter. For more information, see the upsert statement in the MongoDB Server manual.
Defaults to False

bypass_document_validation

Specifies whether the replace operation bypasses document validation. This lets you replace documents that don't meet the schema validation requirements, if any exist. For more information about schema validation, see Schema Validation in the MongoDB Server manual.
Defaults to False.

collation

Specifies the kind of language collation to use when sorting results. For more information, see Collation in the MongoDB Server manual.

hint

Gets or sets the index to scan for documents. For more information, see the hint statement in the MongoDB Server manual.

session

An instance of ClientSession.

let

A Map of parameter names and values. Values must be constant or closed expressions that don't reference document fields. For more information, see the let statement in the MongoDB Server manual.

comment

A comment to attach to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

El siguiente código usa el método replace_one() para encontrar el primer documento donde el campo name tiene el valor "Food Town" y lo reemplaza por uno nuevo llamado "Food World". Dado que la opción upsert está establecida en True, el controlador inserta un nuevo documento si el filtro de consulta no coincide con ningún documento existente.

restaurants = database["restaurants"]
query_filter = {"name" : "Food Town"}
replace_document = { "name" : "Food World",
"cuisine" : "Mixed",
"address" : {
"street" : "123 Food St",
"zipCode" : "10003"
},
"borough" : "Manhattan"
}
result = restaurants.replace_one(query_filter, replace_document, upsert = True)

El método replace_one() devuelve un objeto UpdateResult. El tipo UpdateResult contiene las siguientes propiedades:

Propiedad
Descripción

matched_count

The number of documents that matched the query filter, regardless of how many were updated.

modified_count

The number of documents modified by the update operation. If an updated document is identical to the original, it is not included in this count.

raw_result

The raw result document returned by the server.

upserted_id

The ID of the document that was upserted in the database, if the driver performed an upsert. Otherwise None.

Para obtener más información sobre cómo crear filtros de consulta, consulte la guía Especificar una consulta.

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

Volver

Update Documents

En esta página