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

Atualizar Matrizes em um Documento

Neste guia, você pode aprender como usar o driver Rust para atualizar campos de array em documentos MongoDB .

Para atualizar uma array em um documento, você pode usar um operador de atualização e um operador posicional. Os operadores de atualização especificam o tipo de atualização a ser executada e os operadores posicionais especificam qual elemento da array atualizar.

Os exemplos deste guia usam os seguintes documentos de exemplo na collection students:

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

Use o operador posicional $ para atualizar o primeiro elemento de array que corresponde ao seu filtro de query. O operador $ representa a posição do primeiro elemento correspondente na array.

O exemplo a seguir usa o método update_one() para localizar um documento no qual a array test_scores contém o valor 62. O exemplo então usa o operador posicional para atualizar o primeiro elemento correspondente de 62 para 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

O documento a seguir reflete as alterações resultantes da operação de atualização anterior:

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

Use o operador posicional all $[] para atualizar todos os elementos em um campo de array. O operador $[] indica que a atualização se aplica a todos os elementos da array.

O exemplo a seguir usa o método update_one() para localizar o documento no qual o valor do campo student é "Kai Ling". Em seguida, o exemplo usa o operador posicional all para incrementar cada valor na array test_scores em 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

A operação de atualização anterior resulta em um documento semelhante ao seguinte:

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

Use o operador posicional filtrado $[<identifier>] para atualizar todos os elementos de array que correspondem a um filtro de array. Um filtro de array é um documento que especifica quais elementos de array atualizar. Defina como um <identifier> nome de espaço reservado que você faça referência no filtro de matriz.

Para usar o operador posicional filtrado, encadeie o método array_filters() à sua chamada de método de atualização e passe uma array de documentos de filtro.

O exemplo seguinte utiliza o método update_many() para localizar todos os documentos na collection students. Em seguida, o exemplo usa o operador posicional filtrado para adicionar pontos 8 a todos os valores test_scores que são 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

A operação de atualização anterior resulta em documentos semelhantes aos seguintes:

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

Para obter mais informações sobre os conceitos deste guia, consulte a seguinte documentação:

  • Atualizar guiade documentos

  • Especificar uma guia de query

Para saber mais sobre os operadores mencionados neste guia, consulte a seguinte documentação manual do MongoDB Server :

  • $ (operador de atualização)

  • $[] (operador de atualização)

  • $[<identifier>] (operador de atualização)

  • Operadores de atualização de array

Para saber mais sobre os métodos e tipos mencionados neste guia, consulte a documentação da API abaixo:

Voltar

Substituir documentos

Nesta página