Substituir um documento
Você pode substituir um único documento usando o collection.replaceOne() método. replaceOne()
aceita um documento de query e um documento de substituição. Se a query corresponder a um documento na collection, ela substituirá o primeiro documento que corresponde à query pelo documento de substituição fornecido. Essa operação remove todos os campos e valores do documento original e os substitui pelos campos e valores do documento de substituição. O valor do campo _id
permanece o mesmo, a menos que você especifique explicitamente um novo valor para _id
no documento de substituição.
Você pode especificar mais opções, como upsert
, usando o parâmetro opcional options
. Se você definir o campo de opção upsert
como true
, o método inserirá um novo documento se nenhum documento corresponder à query.
O método replaceOne()
lança uma exceção se ocorrer um erro durante a execução. Por exemplo, se você especificar um valor que viole uma regra de índice única, o replaceOne()
lançará um duplicate key error
.
Observação
Se o aplicativo exigir o documento após a atualização, use o método collection.findOneAndReplace() , que possui uma interface semelhante a replaceOne()
. Você pode configurar o findOneAndReplace()
para gerar o documento correspondente original ou o documento de substituição.
Exemplo
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 11 // Get the database and collection on which to run the operation 12 const database = client.db("sample_mflix"); 13 const movies = database.collection("movies"); 14 15 // Create a query for documents where the title contains "The Cat from" 16 const query = { title: { $regex: "The Cat from" } }; 17 18 // Create the document that will replace the existing document 19 const replacement = { 20 title: `The Cat from Sector ${Math.floor(Math.random() * 1000) + 1}`, 21 }; 22 23 // Execute the replace operation 24 const result = await movies.replaceOne(query, replacement); 25 26 // Print the result 27 console.log(`Modified ${result.modifiedCount} document(s)`); 28 } finally { 29 await client.close(); 30 } 31 } 32 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 title: string; 10 } 11 12 async function run() { 13 try { 14 const database = client.db("sample_mflix"); 15 const movies = database.collection<Movie>("movies"); 16 17 const result = await movies.replaceOne( 18 { title: { $regex: "The Cat from" } }, 19 { 20 title: `The Cat from Sector ${Math.floor(Math.random() * 1000) + 1}`, 21 } 22 ); 23 console.log(`Modified ${result.modifiedCount} document(s)`); 24 } finally { 25 await client.close(); 26 } 27 } 28 run().catch(console.dir);
Ao executar o exemplo anterior, você vê a seguinte saída:
Modified 1 document(s)