Atualize documentos
Nesta página
O shell do MongoDB oferece os seguintes métodos para atualizar documentos em uma coleção
Para atualizar um único documento, use
db.collection.updateOne()
.Para atualizar vários documentos, use
db.collection.updateMany()
.Para substituir um documento, use
db.collection.replaceOne()
.
Os exemplos nesta página referenciam o conjunto de dados de amostra do Atlas. Você pode criar um cluster do Atlas gratuito e preencher este agrupamento com dados de amostra para acompanhar junto com estes exemplos. Para mais informações, consulte Iniciar com Atlas.
Atualizar sintaxe do operador
Para atualizar um documento, o MongoDB fornece operadores de atualização, como $set
, para modificar os valores dos campos.
Para usar os operadores de atualização, passe para os métodos de atualização um documento de atualização do formulário:
{ <update operator>: { <field1>: <value1>, ... }, <update operator>: { <field2>: <value2>, ... }, ... }
Alguns operadores de atualização, como $set
, criam o campo se o campo não existir. Consulte a referência individual do operador de atualização para obter detalhes.
Atualizar um único documento
Utilize o método db.collection.updateOne()
para atualizar o primeiro documento que corresponde a um filtro especificado.
Observação
O MongoDB preserva uma ordem de classificação natural para documentos. Essa ordenação é um recurso de implementação interna, e você não deve confiar em nenhuma estrutura específica dentro dela. Para saber mais, consulte ordem natural.
Exemplo
Para atualizar o documento primeiro na collection sample_mflix.movies
onde title
é igual a "Twilight"
:
use sample_mflix db.movies.updateOne( { title: "Twilight" }, { $set: { plot: "A teenage girl risks everything–including her life–when she falls in love with a vampire." }, $currentDate: { lastUpdated: true } })
A operação de atualização:
Utiliza o operador
$set
para atualizar o valor do campoplot
para o filmeTwilight
.Utiliza o operador
$currentDate
para atualizar o valor do campolastUpdated
para a data atual. Se o campolastUpdated
não existir,$currentDate
criará o campo. Consulte$currentDate
para obter detalhes.
Atualizar vários documentos
Utilize o db.collection.updateMany()
para atualizar todos os documentos que correspondem a um filtro especificado.
Exemplo
Para atualizar todos os documentos na coleção sample_airbnb.listingsAndReviews
para atualizar onde security_deposit
é menor do que 100
:
use sample_airbnb db.listingsAndReviews.updateMany( { security_deposit: { $lt: 100 } }, { $set: { security_deposit: 100, minimum_nights: 1 } } )
A operação de atualização utiliza o operador $set
para atualizar o valor do campo security_deposit
para 100
e o valor do campo minimum_nights
para 1
.
Substituir um documento
Para substituir todo o conteúdo de um documento, exceto o campo _id
, passe um documento totalmente novo como o segundo argumento para db.collection.replaceOne()
.
Ao substituir um documento, o documento de substituição deve conter apenas pares de campo/valor. Não inclua expressões de operadores de atualização.
O documento de substituição pode ter campos diferentes do documento original. No documento de substituição, você pode omitir o campo _id
, pois o campo _id
é imutável; no entanto, se você incluir o campo _id
, ele deverá ter o mesmo valor que o valor atual.
Exemplo
Para substituir o primeiro documento da coleção sample_analytics.accounts
por account_id: 371138
:
db.accounts.replaceOne( { account_id: 371138 }, { account_id: 893421, limit: 5000, products: [ "Investment", "Brokerage" ] } )
Execute o seguinte comando para ler seu documento atualizado:
db.accounts.findOne( { account_id: 893421 } )
Atualizar comportamento
Para saber mais sobre o comportamento específico da atualização de documentos, consulte Comportamento.
Saiba mais
Para saber como atualizar documentos usando um pipeline de agregação, consulte Atualizações com pipeline de agregação.
Para ver todos os métodos disponíveis para atualizar documentos, consulte Atualizar métodos.