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 sufalse
, quindi solo un documento viene aggiornato se non lo imposti sutrue
.
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" }