Use o
update() método ou save() método para atualizar documentos no MongoDB. No MongoDB, tanto o
update() e o método save() pode ser usado para atualizar um documento. A
update() O método atualiza valores em um documento ou documentos existentes, enquanto o método save() O método substitui um documento pelo documento passado como parâmetro. No entanto, o
update() O método também pode substituir todo o documento, dependendo do parâmetro que é passado. A update() Método
Aqui está um exemplo do
update() método. Primeiro, vamos selecionar um registro para atualizar:
db.musicians.find({ _id: 6 }).pretty() Resultado:
{
"_id" : 6,
"name" : "Jeff Martin",
"instrument" : "Vocals",
"born" : 1969
}
Jeff realmente faz muito mais do que apenas cantar. Então vamos adicionar mais alguns instrumentos. Usaremos o
$set operador para atualizar um único campo. db.musicians.update(
{ _id: 6 },
{ $set:{ instrument : [ "Vocals", "Guitar", "Sitar" ] } }
) Resultado:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Agora, se fizermos outra consulta, veremos que o documento foi atualizado conforme especificado:
db.musicians.find({ _id: 6 }).pretty() Resultado:
{
"_id" : 6,
"name" : "Jeff Martin",
"instrument" : [
"Vocals",
"Guitar",
"Sitar"
],
"born" : 1969
}
Mais algumas opções:
- Se o campo não existir, o
$setO operador adicionará um novo campo com o valor especificado, desde que o novo campo não viole uma restrição de tipo. - Você também pode usar
{ upsert: true }para criar um novo documento quando nenhum documento corresponder à consulta. - Você pode usar
{ multi: true }para atualizar vários documentos que atendem aos critérios de consulta. Por padrão, esta opção é definida comofalse, portanto, apenas um documento será atualizado se você não o definir comotrue.
O save() Método
O
save() é um cruzamento entre update() e insert() . Quando você usa o save() método, se o documento existir, ele será atualizado. Se não existir, será criado. Se você não especificar um
_id campo, o MongoDB criará um documento com um _id que contém um ObjectId valor (de acordo com um insert() ). Se você especificar um
_id campo, ele executa uma atualização com { upsert: true } , ou seja, ele cria um novo documento se nenhum documento corresponder à consulta. No momento, não temos nenhum documento em nossos produtores coleção. Vamos criar um usando o
save() método:db.producers.save({ _id: 1, name: "Bob Rock" }) Resultado:
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 1 })
Agora, se pesquisarmos os produtores coleção, vemos nosso registro recém-criado:
db.producers.find()
Resultado:
{ "_id" : 1, "name" : "Bob Rock" }