sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB - Actualizar un documento

Usa el update() método o save() método para actualizar documentos en MongoDB.

En MongoDB, tanto el update() método y save() El método se puede utilizar para actualizar un documento.

La update() actualiza valores en un documento o documentos existentes, mientras que save() El método reemplaza un documento con el documento pasado como parámetro.

Sin embargo, el update() El método también puede reemplazar todo el documento, según el parámetro que se pase.

La update() Método

Aquí hay un ejemplo de update() método.

Primero, seleccionemos un registro para actualizar:

db.musicians.find({ _id: 6 }).pretty()

Resultado:

{
	"_id" : 6,
	"name" : "Jeff Martin",
	"instrument" : "Vocals",
	"born" : 1969
}

Jeff en realidad hace mucho más que solo cantar. Así que agreguemos algunos instrumentos más. Usaremos el $set operador para actualizar un solo campo.

db.musicians.update(
        { _id: 6 }, 
        { $set:{ instrument : [ "Vocals", "Guitar", "Sitar" ] } }
    )

Resultado:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Ahora si hacemos otra consulta, vemos que el documento ha sido actualizado como se especifica:

db.musicians.find({ _id: 6 }).pretty()

Resultado:

{
	"_id" : 6,
	"name" : "Jeff Martin",
	"instrument" : [
		"Vocals",
		"Guitar",
		"Sitar"
	],
	"born" : 1969
}

Algunas opciones más:

  • Si el campo no existe, el $set el operador agregará un nuevo campo con el valor especificado, siempre que el nuevo campo no viole una restricción de tipo.
  • También puede usar { upsert: true } para crear un nuevo documento cuando ningún documento coincida con la consulta.
  • Puedes usar { multi: true } para actualizar varios documentos que cumplen los criterios de consulta. De forma predeterminada, esta opción está establecida en false , por lo que solo se actualiza un documento si no lo establece en true .

El save() Método

El save() El método es un cruce entre update() y insert() . Cuando usas save() método, si el documento existe, se actualizará. Si no existe, se creará.

Si no especifica un _id campo, MongoDB creará un documento con un _id que contiene un ObjectId valor (según un insert() ).

Si especifica un _id campo, realiza una actualización con { upsert: true } , es decir, crea un nuevo documento si ningún documento coincide con la consulta.

Actualmente no tenemos ningún documento en nuestros productores recopilación. Vamos a crear uno usando save() método:

db.producers.save({ _id: 1, name: "Bob Rock" })

Resultado:

WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 1 })

Ahora si buscamos los productores colección, vemos nuestro registro recién creado:

db.producers.find()

Resultado:

{ "_id" : 1, "name" : "Bob Rock" }