MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB - Mettre à jour un document

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 sur false , donc un seul document est mis à jour si vous ne le définissez pas sur true .

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" }