Menu Docs
Página inicial do Docs
/ / /
Node.js
/ / /

Inserir ou atualizar em uma única operação

Nesta página

  • Visão geral
  • Executando uma atualização
  • Executando um upsert

Se seu aplicativo armazena e modifica dados no MongoDB, você provavelmente usa operações de inserção e atualização. Em determinados fluxos de trabalho, independentemente de você executar uma operação de inserção ou atualização depende da existência do documento. Nesses casos, você pode simplificar a lógica do aplicativo usando a opção upsert disponível nos seguintes métodos:

  • updateOne()

  • replaceOne()

  • updateMany()

Se o filtro de consulta passado para esses métodos não encontrar nenhuma correspondência e você definir a opção upsert como true, o MongoDB insere o documento atualizado. Vejamos um exemplo.

Suponha que seu aplicativo rastreie a localização atual de food trucks, armazenando os dados do endereço mais próximo na coleta myDB.foodTrucks, que se parece com o seguinte:

[
{ name: "Haute Skillet", address: "42 Avenue B" },
{ name: "Lady of the Latke", address: "35 Fulton Rd" },
...
]

Como usuário do aplicativo, você leu sobre um food truck mudando seu local normal e deseja aplicar a atualização. Esta atualização pode ser semelhante a :

const myDB = client.db("myDB");
const myColl = myDB.collection("foodTrucks");
const query = { name: "Deli Llama" };
const update = { $set: { name: "Deli Llama", address: "3 Nassau St" }};
const options = {};
myColl.updateOne(query, update, options);

Se houver um caminhão de alimentação chamado "Deli Llama", o método chamado acima atualizará o documento na coleta. No entanto, se não houver nenhum food truck chamado "Deli Llama" em sua coleção, nenhuma alteração será feita.

Considere o caso em que você deseja adicionar informações sobre o food truck, mesmo que ele não exista atualmente em sua coleta. Em vez de primeiro consultar se ele existe para determinar se deve inserir ou atualizar o documento, podemos definir upsert para true em nossa chamada para updateOne() da seguinte forma:

const query = { name: "Deli Llama" };
const update = { $set: { name: "Deli Llama", address: "3 Nassau St" }};
const options = { upsert: true };
myColl.updateOne(query, update, options);

Depois de executar a operação acima, sua coleção deve ser semelhante ao seguinte, se o documento "Deli Llama" existia em sua coleção antecipadamente:

[
{ name: "Haute Skillet", address: "42 Avenue B" },
{ name: "Lady of the Latke", address: "35 Fulton Rd" },
{ name: "Deli Llama", address: "3 Nassau St" },
...
]

Voltar

Atualizar Matrizes em um Documento