O shell do MongoDB oferece os seguintes métodos para atualizar documentos em uma coleção
Para atualizar um único documento,
db.collection.updateOne()use.Para atualizar vários documentos,
db.collection.updateMany()use.Para substituir um documento,
db.collection.replaceOne()use.
Os exemplos nesta página referenciam o conjunto de dados de amostra do MongoDB. Para aprender mais sobre como configurar implantações e preencher um cluster com dados de amostra, consulte Comece a usar o MongoDB.
Atualizar sintaxe do operador
Para atualizar um documento, o MongoDB fornece operadores de atualização, como, para modificar os valores de campo .$set
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,$set como, criam o campo se o campo não existir. Consulte a referência individual dos operadores de atualização para obter detalhes.
Atualizar um único documento
Utilize o método db.collection.updateOne() para atualizar o documento primeiro 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 para atualizar o valor
$setdoplotcampo para oTwilightfilme.Utiliza o operador para atualizar o valor
$currentDatedolastUpdatedcampo para a data atual. SelastUpdatedo campo não existir,$currentDatecriará o campo. Consulte$currentDatepara obter detalhes.
Atualizar vários documentos
Utilize o para atualizar todos os documentos que correspondem a um filtro db.collection.updateMany() 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 para atualizar o valor $set do security_deposit campo para 100 e o valor do minimum_nights campo 1 para.
Substituir um documento
Para substituir todo o conteúdo de um documento , exceto o _id campo, passe um documento totalmente novo como segundo argumento db.collection.replaceOne() para.
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 aggregation pipeline, consulte Atualizações com aggregation pipeline.
Para ver todos os métodos disponíveis para atualizar documentos, consulte Atualizar métodos.