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 a utilizar la librería PHP de MongoDB para actualizar documentos en una colección de MongoDB. Puedes llamar al método MongoDB\Collection::updateOne() para actualizar un solo documento o al método MongoDB\Collection::updateMany() para actualizar varios documentos.

The examples in this guide use the restaurants collection in the sample_restaurants database from the Atlas sample datasets. To access this collection from your PHP application, instantiate a MongoDB\Client that connects to an Atlas cluster and assign the following value to your $collection variable:

$collection = $client->sample_restaurants->restaurants;

Para aprender a crear una implementación gratuita de MongoDB y cargar los conjuntos de datos de muestra, consulta la guía Introducción de MongoDB.

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

  • MongoDB\Collection::updateOne()que actualiza el primer documento que coincide con los criterios de búsqueda

  • MongoDB\Collection::updateMany(), que actualiza todos los documentos que coinciden con los criterios de búsqueda

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

  • Documento de filtro de query: Especifica 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 de MongoDB Server.

  • Actualizar documento: especifica el operador de actualización o el tipo de actualización que se realizará, así como los campos y valores que se modificarán. Para obtener una lista de los operadores de actualización y su uso, consulte la guía de Operadores de Actualización de Campos en el manual de MongoDB Server.

El siguiente ejemplo utiliza el método updateOne() para actualizar el valor name de un documento en la colección restaurants de 'Bagels N Buns' a '2 Bagels 2 Buns':

$result = $collection->updateOne(
['name' => 'Bagels N Buns'],
['$set' => ['name' => '2 Bagels 2 Buns']],
);

El siguiente ejemplo utiliza el método updateMany() para actualizar todos los documentos que tengan un valor cuisine de 'Pizza'. Después de la actualización, los documentos tienen un cuisine valor de 'Pasta'.

$result = $collection->updateMany(
['cuisine' => 'Pizza'],
['$set' => ['cuisine' => 'Pasta']],
);

Puedes modificar el comportamiento de los métodos updateOne() y updateMany() pasando un arreglo que especifique los valores de opciones como parámetro. La siguiente tabla describe algunas opciones que puedes configurar en el arreglo:

Opción
Descripción

upsert

Specifies whether the update 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.

bypassDocumentValidation

Specifies whether the update operation bypasses document validation. This lets you update 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.

sort

Se aplica solo a updateOne(). Especifica el orden de clasificación que se aplicará a los documentos antes de realizar la operación de actualización.

collation

Specifies the kind of language collation to use when sorting results. To learn more, see the Collation section of this page.

arrayFilters

Especifica a qué elementos del arreglo se aplica una actualización si la operación modifica los campos del arreglo.

hint

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

writeConcern

Sets the write concern for the operation. For more information, see Write Concern in the MongoDB Server manual.

let

Specifies a document with a list of values to improve operation readability. 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 ejemplo utiliza el método updateMany() para encontrar todos los documentos que tienen borough valor de 'Manhattan'. Luego actualiza el valor borough en estos documentos a 'Manhattan (north)'. Debido a que la opción upsert está configurada en true, la MongoDB PHP librería inserta un nuevo documento si el filtro de consulta no coincide con ningún documento existente.

$result = $collection->updateMany(
['borough' => 'Manhattan'],
['$set' => ['borough' => 'Manhattan (north)']],
['upsert' => true],
);

Para especificar una intercalación para tu operación, pasa un parámetro arreglo $options que establezca la opción collation en el método de la operación. Asigna la opción collation a un arreglo que configure las reglas de intercalación.

La siguiente tabla describe los campos que se pueden configurar para la intercalación:

Campo
Descripción

locale

(Required) Specifies the International Components for Unicode (ICU) locale. For a list of supported locales, see Collation Locales and Default Parameters in the MongoDB Server manual.

Data Type: string

caseLevel

(Opcional) Especifica si se debe incluir la comparación de mayúsculas y minúsculas.

Cuando se establece en true, el comportamiento de comparación depende del valor del campo strength:

- Si strength es 1, la librería PHP compara los caracteres base
y las mayúsculas y minúsculas.

- Si strength es 2, la librería PHP compara los caracteres base,
los signos diacríticos, otras diferencias secundarias y las mayúsculas y minúsculas.

- Si strength es cualquier otro valor, este campo se ignora.

Cuando se establece en false, la librería PHP no incluye la comparación de mayúsculas y minúsculas en el nivel de intensidad 1 o 2.

Tipo de dato: bool
Por defecto: false

caseFirst

(Opcional) Especifica el orden de clasificación de las diferencias de mayúsculas y minúsculas durante las comparaciones de nivel terciario.

Tipo de dato: string
Por defecto: "off"

strength

(Optional) Specifies the level of comparison to perform, as defined in the ICU documentation.

Data Type: int
Default: 3

numericOrdering

(Opcional) Especifica si el controlador compara las cadenas numéricas como números.

Si true se establece en, la biblioteca PHP compara las cadenas numéricas como números. Por ejemplo, al comparar las cadenas ""10y2 "", la biblioteca utiliza los valores numéricos de las cadenas y trata10 "" como mayor que2 "".

Si false se establece en, la biblioteca PHP compara las cadenas numéricas como cadenas. Por ejemplo, al comparar las cadenas10 "" y2 "", la biblioteca compara un carácter a la vez y trata10 "" como menor que2 "".

Para obtener más información, consulte Restricciones de intercalación en el manual del servidor MongoDB.

Tipo de datos: bool
Predeterminado: false

alternate

(Opcional) Especifica si la librería considera los espacios en blanco y la puntuación como caracteres base a los efectos de la comparación.

Tipo de dato: string
Por defecto: "non-ignorable"

maxVariable

(Opcional) Especifica qué caracteres considera la librería ignorables cuando el campo alternate se establece en "shifted".

Tipo de dato: string
Por defecto: "punct"

backwards

(Opcional) Especifica si las strings que contienen diacríticos se ordenan de atrás hacia adelante en la string.

Tipo de dato: bool
Por defecto: false

Para obtener más información sobre la intercalación y los posibles valores de cada campo, consulta la entrada Collation en el manual del servidor de MongoDB.

Los métodos updateOne() y updateMany() devuelven una instancia de la clase MongoDB\UpdateResult. Esta clase contiene las siguientes funciones miembro:

Función
Descripción

getMatchedCount()

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

getModifiedCount()

Devuelve el número de documentos modificados por la operación de actualización. Si un document actualizado es idéntico al original, no se incluye en este recuento.

isAcknowledged()

Devuelve un valor booleano que indica si se reconoció la operación de guardado.

getUpsertedCount()

Devuelve el número de document que fueron insertados o actualizados en la base de datos.

getUpsertedId()

Devuelve el ID del document que fue inserción en la base de datos, si el driver realizó una inserción.

El siguiente ejemplo utiliza el método updateMany() para actualizar el campo name de los documentos coincidentes de 'Dunkin' Donuts' a 'Dunkin''. Llama a la función nodo getModifiedCount() para imprimir el número de documentos modificados:

$result = $collection->updateMany(
['name' => 'Dunkin\' Donuts'],
['$set' => ['name' => 'Dunkin\'']],
);
echo 'Modified documents: ', $result->getModifiedCount();

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: