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
$setl'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" }