Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Actualizar arreglos en un documento

En esta guía, puedes aprender cómo usar el driver de Rust para actualizar campos de arreglos en documentos de MongoDB.

Para actualizar un arreglo en un documento, puedes utilizar un operador de actualización y un operador posicional. Los operadores de actualización especifican el tipo de actualización que se debe realizar, y los operadores posicionales indican qué elemento del arreglo se debe actualizar.

Los ejemplos de esta guía utilizan los siguientes documentos de muestra en el students colección:

{ "_id": 1, "student": "Kai Ling", "test_scores": [88, 62, 73] },
{ "_id": 2, "student": "Francesca Miao", "test_scores": [95, 45, 67] }

Utilice el operador posicional $ para actualizar el primer elemento del arreglo que coincida con tu filtro de query. El operador $ representa la posición del primer elemento coincidente en el arreglo.

El siguiente ejemplo utiliza el método update_one() para encontrar un documento en el que el arreglo test_scores contiene el valor 62. El ejemplo luego utiliza el operador posicional para actualizar el primer elemento coincidente de 62 a 65:

let filter = doc! { "test_scores": 62 };
let update = doc! { "$set": { "test_scores.$": 65 } };
let res = my_coll
.update_one(filter, update)
.await?;
println!("Modified documents: {}", res.modified_count);
Modified documents: 1

El siguiente documento refleja los cambios resultado de la operación de actualización anterior:

{ "_id": 1, "student": "Kai Ling", "test_scores": [88, 65, 73] }

Utiliza el operador positional all $[] para actualizar todos los elementos en un campo arreglo. El operador $[] indica que la actualización se aplica a cada elemento del arreglo.

El siguiente ejemplo utiliza el método update_one() para encontrar el documento en el que el valor del campo student es "Kai Ling". El ejemplo luego utiliza el operador "all positional" para incrementar cada valor en el arreglo test_scores en 5:

let filter = doc! { "student": "Kai Ling" };
let update = doc! { "$inc": { "test_scores.$[]": 5 } };
let res = my_coll
.update_one(filter, update)
.await?;
println!("Modified documents: {}", res.modified_count);
Modified documents: 1

La operación de actualización anterior da como resultado un documento similar al siguiente:

{ "_id": 1, "student": "Kai Ling", "test_scores": [93, 67, 78] }

Utilice el operador posicional filtrado $[<identifier>] para actualizar todos los elementos del arreglo que coincidan con un filtro de arreglo. Un filtro de arreglo es un documento que especifica qué elementos de un arreglo se deben actualizar. Configura el <identifier> con un nombre de marcador de posición que luego referencies en el filtro del arreglo.

Para usar el operador posicional filtrado, encadene el método array_filters() a su llamada al método de actualización y pase un arreglo de documentos de filtro.

El siguiente ejemplo utiliza el método update_many() para encontrar todos los documentos de la colección students. A continuación, el ejemplo utiliza el operador posicional filtrado para añadir 8 puntos a todos los valores test_scores que sean inferiores a 70:

let filter = doc! {};
let update = doc! { "$inc": { "test_scores.$[score]": 8 } };
let res = my_coll
.update_many(filter, update)
.array_filters(vec![doc! { "score": { "$lt": 70 } }])
.await?;
println!("Modified documents: {}", res.modified_count);
Modified documents: 2

La operación de actualizar anterior da como resultado documentos similares a los siguientes:

{ "_id": 1, "student": "Kai Ling", "test_scores": [88, 70, 73] },
{ "_id": 2, "student": "Francesca Miao", "test_scores": [95, 53, 75] }

Para más información sobre los conceptos de esta guía, consulta la siguiente documentación:

  • Guía de Actualización de documentos

  • Especificar una query guía

Para obtener más información sobre los operadores mencionados en esta guía, consulte la siguiente documentación del Manual del Servidor MongoDB:

  • $ (actualizar operador)

  • $[] (operador de actualización)

  • $[]<identifier> (operador de actualización)

  • Operadores de actualización de arreglos

Para obtener más información sobre los métodos y tipos mencionados en esta guía, vea la siguiente documentación de la API:

Volver

Reemplazar Documentos

En esta página