MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB - Atualizar um documento


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 $set O 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 como false , portanto, apenas um documento será atualizado se você não o definir como true .

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" }