MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB - Aggiorna un documento

Usa update() metodo o save() metodo per aggiornare i documenti in MongoDB.

In MongoDB, sia update() metodo e il save() il metodo può essere utilizzato per aggiornare un documento.

Il update() il metodo aggiorna i valori in uno o più documenti esistenti, mentre il metodo save() sostituisce un documento con il documento passato come parametro.

Tuttavia, update() può anche sostituire l'intero documento, a seconda del parametro passato.

L'update() Metodo

Ecco un esempio di update() metodo.

Per prima cosa, selezioniamo un record da aggiornare:

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

Risultato:

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

Jeff in realtà fa molto di più che cantare. Quindi aggiungiamo altri strumenti. Useremo il $set operatore per aggiornare un singolo campo.

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

Risultato:

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

Ora se facciamo un'altra query, vediamo che il documento è stato aggiornato come specificato:

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

Risultato:

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

Alcune altre opzioni:

  • Se il campo non esiste, il $set l'operatore aggiungerà un nuovo campo con il valore specificato, a condizione che il nuovo campo non violi un vincolo di tipo.
  • Puoi anche usare { upsert: true } per creare un nuovo documento quando nessun documento corrisponde alla query.
  • Puoi usare { multi: true } per aggiornare più documenti che soddisfano i criteri di ricerca. Per impostazione predefinita, questa opzione è impostata su false , quindi solo un documento viene aggiornato se non lo imposti su true .

Il save() Metodo

Il save() il metodo è un incrocio tra update() e insert() . Quando usi save() metodo, se il documento esiste, verrà aggiornato. Se non esiste, verrà creato.

Se non specifichi un _id campo, MongoDB creerà un documento con un _id che contiene un ObjectId valore (come per un insert() ).

Se specifichi un _id campo, esegue un aggiornamento con { upsert: true } , ovvero crea un nuovo documento se nessun documento corrisponde alla query.

Al momento non abbiamo alcun documento nei nostri produttori collezione. Creiamone uno usando save() metodo:

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

Risultato:

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

Ora se cerchiamo i produttori raccolta, vediamo il nostro record appena creato:

db.producers.find()

Risultato:

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