Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Atualize documentos

Neste guia, você pode aprender como usar o PyMongo para atualizar documentos em uma coleção MongoDB usando os métodos update_one() ou update_many() .

Os exemplos neste guia usam a collection sample_restaurants.restaurants dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster gratuito do MongoDB Atlas e carregar os conjuntos de dados de amostra, consulte o tutorial Introdução ao PyMongo .

Você pode executar operações de atualização no MongoDB com os seguintes métodos:

  • update_one(), que atualiza o primeiro documento que corresponde aos critérios de pesquisa

  • update_many(), que atualiza todos os documentos que correspondem aos critérios de pesquisa

Cada método de atualização exige os seguintes parâmetros:

  • Um documento de filtro de query , que determina quais documentos atualizar. Para obter mais informações sobre filtros de query, consulte a seção Documentos de filtro de query no manual do MongoDB Server .

  • Um documento de atualização , que especifica o operador de atualização (o tipo de atualização a ser executada) e os campos e valores que devem ser alterados. Para obter uma lista de operadores de atualização e seu uso, consulte a página do guia Operadores de atualização de campo no manual do MongoDB Server .

O exemplo a seguir usa o método update_one() para atualizar o valor name de um documento chamado "Bagels N Buns" na coleção restaurants. Selecione a aba Synchronous ou Asynchronous para ver o código correspondente:

restaurants = database["restaurants"]
query_filter = {'name' : 'Bagels N Buns'}
update_operation = { '$set' :
{ 'name' : '2 Bagels 2 Buns' }
}
result = restaurants.update_one(query_filter, update_operation)
restaurants = database["restaurants"]
query_filter = {'name' : 'Bagels N Buns'}
update_operation = { '$set' :
{ 'name' : '2 Bagels 2 Buns' }
}
result = await restaurants.update_one(query_filter, update_operation)

O exemplo seguinte utiliza o método update_many() para atualizar todos os documentos com um valor cuisine de "Pizza". Após a atualização, os documentos têm um valor cuisine de "Pasta". Selecione a aba Synchronous ou Asynchronous para ver o código correspondente:

restaurants = database["restaurants"]
query_filter = {'cuisine' : 'Pizza'}
update_operation = { '$set' :
{ 'cuisine' : 'Pasta' }
}
result = restaurants.update_many(query_filter, update_operation)
restaurants = database["restaurants"]
query_filter = {'cuisine' : 'Pizza'}
update_operation = { '$set' :
{ 'cuisine' : 'Pasta' }
}
result = await restaurants.update_many(query_filter, update_operation)

Os métodos update_one() e update_many() aceitam opcionalmente parâmetros adicionais, que representam opções que você pode usar para configurar a operação de atualização. Se você não especificar nenhuma opção adicional, o driver não personalizará a operação de atualização.

Propriedade
Descrição

upsert

Especifica se a operação de atualização executará uma operação de upsert se nenhum documento corresponder ao filtro de consulta. Para obter mais informações, consulte a declaração upsert no manual do MongoDB Server . O
padrão é False

bypass_document_validation

Especifica se a operação de atualização ignora a validação do documento . Isso permite atualizar documentos que não atendam aos requisitos de validação de esquema , se houver. Para obter mais informações sobre validação de esquema, consulte Validação de esquema no manual do MongoDB Server .
O padrão False é.

collation

Especifica o tipo de agrupamento de linguagem a ser usado ao classificar os resultados. Consulte Agrupamentos para obter mais informações.

array_filters

Uma lista de filtros que especifica a quais elementos de array uma atualização se aplica.

hint

Obtém ou define o índice para procurar documentos. Para obter mais informações, consulte a declaração de dica no manual do MongoDB Server .

session

Uma instância de ClientSession.

let

Um mapa de nomes e valores de parâmetros. Os valores devem ser expressões constantes ou fechadas que não façam referência aos campos do documento. Para obter mais informações, consulte a declaração let no manual do MongoDB Server .

comment

Um comentário a ser anexado à operação. Para obter mais informações, consulte o guia de campos de comando de inserção no manual do MongoDB Server para obter mais informações.

O código a seguir usa o método update_many() para localizar todos os documentos em que o campo borough tem o valor "Manhattan". Em seguida, ele atualiza o valor de borough nesses documentos para "Manhattan (north)". Como a opção upsert está definida como True, o PyMongo insere um novo documento se o filtro de query não corresponder a nenhum documento existente. Selecione a aba Synchronous ou Asynchronous para ver o código correspondente:

restaurants = database["restaurants"]
query_filter = {'borough' : 'Manhattan'}
update_operation = { '$set' :
{ 'borough' : 'Manhattan (north)' }
}
result = restaurants.update_many(query_filter, update_operation, upsert = True)
restaurants = database["restaurants"]
query_filter = {'borough' : 'Manhattan'}
update_operation = { '$set' :
{ 'borough' : 'Manhattan (north)' }
}
result = await restaurants.update_many(query_filter, update_operation, upsert = True)

Ao executar uma operação de atualização, você pode especificar um agrupamento para o driver usar.

Um agrupamento é um conjunto de regras específicas do idioma para comparação de cadeias de caracteres, como para letras maiúsculas e minúsculas e acentos.

Para especificar um agrupamento, crie uma instância da classe Collation ou um dicionário Python. Para obter uma lista de opções a serem passadas para o construtor Collation ou incluídas como chaves no dicionário, consulte Agrupamento no manual do MongoDB Server.

Dica

Importar agrupamento

Para criar uma instância da classe Collation, você deve importá-la do pymongo.collation.

O exemplo a seguir executa a mesma operação de atualização do exemplo anterior, mas com um agrupamento padrão de fr_CA. Selecione a aba Synchronous ou Asynchronous para ver o código correspondente:

from pymongo.collation import Collation
restaurants = database["restaurants"]
query_filter = {'cuisine' : 'Pizza'}
update_operation = { '$set' :
{ 'cuisine' : 'Pasta' }
}
result = restaurants.update_many(query_filter, update_operation,
collation=Collation(locale='fr_CA'))
from pymongo.collation import Collation
restaurants = database["restaurants"]
query_filter = {'cuisine' : 'Pizza'}
update_operation = { '$set' :
{ 'cuisine' : 'Pasta' }
}
result = await restaurants.update_many(query_filter, update_operation,
collation=Collation(locale='fr_CA'))

Observação

O agrupamento de operações substitui o padrão

Quando você especifica um agrupamento como parte de uma operação, ele substitui o agrupamento padrão para a coleção.

Os métodos update_one() e update_many() retornam um objeto UpdateResult. O tipo UpdateResult contém as seguintes propriedades:

Propriedade
Descrição

matched_count

O número de documentos que corresponderam ao filtro de queries, independentemente de quantos foram atualizados.

modified_count

O número de documentos modificados pela operação de atualização. Se um documento atualizado for idêntico ao original, ele não será incluído nesta contagem.

raw_result

O documento do resultado bruto retornado pelo servidor.

upserted_id

A ID do documento que foi atualizado no banco de dados, se o driver tiver realizado um upsert. Caso contrário, None.

Para saber mais sobre como criar filtros de queries, consulte o guia Especifique uma consulta.

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: