Utilisez le update()
méthode ou save()
méthode pour mettre à jour les documents dans MongoDB.
Dans MongoDB, à la fois le update()
et la méthode save()
La méthode peut être utilisée pour mettre à jour un document.
Le update()
met à jour les valeurs dans un ou plusieurs documents existants, tandis que la méthode save()
remplace un document par le document passé en paramètre.
Cependant, le update()
peut également remplacer le document entier, selon le paramètre transmis.
La update()
Méthode
Voici un exemple de update()
méthode.
Commençons par sélectionner un enregistrement à mettre à jour :
db.musicians.find({ _id: 6 }).pretty()
Résultat :
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }
Jeff fait en fait bien plus que chanter. Ajoutons donc quelques instruments supplémentaires. Nous utiliserons le $set
opérateur pour mettre à jour un seul champ.
db.musicians.update( { _id: 6 }, { $set:{ instrument : [ "Vocals", "Guitar", "Sitar" ] } } )
Résultat :
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Maintenant, si nous faisons une autre requête, nous voyons que le document a été mis à jour comme spécifié :
db.musicians.find({ _id: 6 }).pretty()
Résultat :
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : [ "Vocals", "Guitar", "Sitar" ], "born" : 1969 }
Quelques options supplémentaires :
- Si le champ n'existe pas, le
$set
ajoutera un nouveau champ avec la valeur spécifiée, à condition que le nouveau champ ne viole pas une contrainte de type. - Vous pouvez également utiliser
{ upsert: true }
pour créer un nouveau document lorsqu'aucun document ne correspond à la requête. - Vous pouvez utiliser
{ multi: true }
pour mettre à jour plusieurs documents répondant aux critères de la requête. Par défaut, cette option est définie surfalse
, donc un seul document est mis à jour si vous ne le définissez pas surtrue
.
Le save()
Méthode
Le save()
la méthode est un croisement entre update()
et insert()
. Lorsque vous utilisez le save()
méthode, si le document existe, il sera mis à jour. S'il n'existe pas, il sera créé.
Si vous ne spécifiez pas de _id
champ, MongoDB créera un document avec un _id
qui contient un ObjectId
valeur (selon un insert()
).
Si vous spécifiez un _id
champ, il effectue une mise à jour avec { upsert: true }
, ce qui signifie qu'il crée un nouveau document si aucun document ne correspond à la requête.
Nous n'avons actuellement aucun document dans nos
producteurs
le recueil. Créons-en un en utilisant le save()
méthode :
db.producers.save({ _id: 1, name: "Bob Rock" })
Résultat :
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 1 })
Maintenant, si nous recherchons les producteurs collection, nous voyons notre enregistrement nouvellement créé :
db.producers.find()
Résultat :
{ "_id" : 1, "name" : "Bob Rock" }