Atualizar um documento
Você pode atualizar um único documento usando o arquivo collection.updateOne() método. O método updateOne()
aceita um documento de filtro e um documento de atualização. Se a query corresponder aos documentos na coleção, o método aplicará as atualizações do documento de atualização aos campos e valores deles. O documento de atualização contém operadores de atualização que instruem o método sobre as alterações a serem feitas nas correspondências.
Você pode especificar opções de consulta adicionais utilizando o objeto options
passado como o segundo parâmetro do método updateOne()
. Defina a opção upsert
como true
para criar um novo documento se nenhum documento corresponder ao filtro. Para obter informações adicionais, consulte a documentação da API do updateOne().
updateOne()
linha uma exceção se ocorrer um erro durante a execução. Se você especificar um valor em seu documento de atualização para o campo imutável _id
, o método lançará uma exceção. Se o documento de atualização contiver um valor que viole regras de índice exclusivas, o método lançará uma exceção de duplicate
key error
.
Observação
Se seu aplicativo exigir o documento após a atualização, avalie usar o método collection.findOneAndUpdate(), que tem uma interface semelhante a updateOne()
, mas também retorna o documento original ou atualizado.
Exemplo
O exemplo a seguir usa o operador de atualização $set
, que especifica valores de atualização para campos do documento. Para obter mais informações sobre operadores de atualização, consulte a documentação de referência do operador de atualização do MongoDB.
Observação
Você pode utilizar este exemplo para se conectar a uma instância do MongoDB e interagir com um banco de dados que contém dados de amostra. Para saber mais sobre como se conectar à sua instância do MongoDB e carregar um conjunto de dados de amostra, consulte o guia Exemplos de uso.
1 import { MongoClient } from "mongodb"; 2 3 // Replace the uri string with your MongoDB deployment's connection string. 4 const uri = "<connection string uri>"; 5 6 const client = new MongoClient(uri); 7 8 async function run() { 9 try { 10 const database = client.db("sample_mflix"); 11 const movies = database.collection("movies"); 12 13 // create a filter for a movie to update 14 const filter = { title: "Random Harvest" }; 15 16 // this option instructs the method to create a document if no documents match the filter 17 const options = { upsert: true }; 18 19 // create a document that sets the plot of the movie 20 const updateDoc = { 21 $set: { 22 plot: `A harvest of random numbers, such as: ${Math.random()}` 23 }, 24 }; 25 26 const result = await movies.updateOne(filter, updateDoc, options); 27 console.log( 28 `${result.matchedCount} document(s) matched the filter, updated ${result.modifiedCount} document(s)`, 29 ); 30 } finally { 31 await client.close(); 32 } 33 } 34 run().catch(console.dir);
1 import { MongoClient } from "mongodb"; 2 3 // Replace the uri string with your MongoDB deployment's connection string. 4 const uri = "<connection string uri>"; 5 6 const client = new MongoClient(uri); 7 8 interface Movie { 9 plot: string; 10 title: string; 11 } 12 13 async function run() { 14 try { 15 const database = client.db("sample_mflix"); 16 const movies = database.collection<Movie>("movies"); 17 18 const result = await movies.updateOne( 19 { title: "Random Harvest" }, 20 { 21 $set: { 22 plot: `A harvest of random numbers, such as: ${Math.random()}`, 23 }, 24 }, 25 { upsert: true } 26 ); 27 console.log( 28 `${result.matchedCount} document(s) matched the filter, updated ${result.modifiedCount} document(s)` 29 ); 30 } finally { 31 await client.close(); 32 } 33 } 34 run().catch(console.dir);
Se você executar o exemplo acima, verá a seguinte saída:
1 document(s) matched the filter, updated 1 document(s)