Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Actualizar arreglos en un documento

En esta guía, aprenderá a utilizar el controlador de Rust para actualizar campos de tipo array en documentos de MongoDB.

Para actualizar un array en un documento, puede usar un operador de actualización y un operador posicional. Los operadores de actualización especifican el tipo de actualización que se va a realizar, y los operadores posicionales especifican qué elemento del array se va a 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 de la matriz que coincida con su filtro de consulta. El operador $ representa la posición del primer elemento coincidente en la matriz.

El siguiente ejemplo utiliza el método update_one() para encontrar un documento en el que el array test_scores contiene el valor 62. A continuación, el ejemplo 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 resultantes de la operación de actualización anterior:

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

Utilice el operador posicional $[] para actualizar todos los elementos de un campo de matriz. El operador $[] indica que la actualización se aplica a todos los elementos de la matriz.

El siguiente ejemplo utiliza el método update_one() para encontrar el documento en el que el valor del campo student es "Kai Ling". A continuación, el ejemplo utiliza el operador posicional all para incrementar cada valor en el array 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 genera 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 de la matriz que coincidan con un filtro de matriz. Un filtro de matriz es un documento que especifica qué elementos de la matriz se deben actualizar. Asigne <identifier> a un nombre de marcador de posición al que luego hará referencia en el filtro de matriz.

Para utilizar el operador posicional filtrado, encadene el método array_filters() a la llamada a su método de actualización y pase una matriz de documentos de filtro.

El siguiente ejemplo utiliza el método update_many() para encontrar todos los documentos en la colección students. A continuación, el ejemplo utiliza el operador posicional filtrado para agregar puntos 8 a todos los valores test_scores que son menores que 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 actualización anterior genera 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ónde 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