Mise à jour de Node.js MongoDB


Mettre à jour le document

Vous pouvez mettre à jour un enregistrement, ou un document tel qu'il est appelé dans MongoDB, en utilisant la updateOne()méthode.

Le premier paramètre de la updateOne()méthode est un objet de requête définissant le document à mettre à jour.

Remarque : Si la requête trouve plusieurs enregistrements, seule la première occurrence est mise à jour.

Le deuxième paramètre est un objet définissant les nouvelles valeurs du document.

Exemple

Mettez à jour le document avec l'adresse "Valley 345" en name="Mickey" et address="Canyon 123":

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  var myquery = { address: "Valley 345" };
  var newvalues = { $set: {name: "Mickey", address: "Canyon 123" } };
  dbo.collection("customers").updateOne(myquery, newvalues, function(err, res) {
    if (err) throw err;
    console.log("1 document updated");
    db.close();
  });
});

Enregistrez le code ci-dessus dans un fichier appelé "demo_update_one.js" et exécutez le fichier :

Exécutez "demo_update_one.js"

C:\Users\Your Name>node demo_update_one.js

Ce qui vous donnera ce résultat :

1 document updated


Mettre à jour uniquement des champs spécifiques

Lors de l'utilisation de l' $setopérateur, seuls les champs spécifiés sont mis à jour :

Exemple

Mettez à jour l'adresse de "Valley 345" à "Canyon 123":

...
  var myquery = { address: "Valley 345" };
  var newvalues = { $set: { address: "Canyon 123" } };
  dbo.collection("customers").updateOne(myquery, newvalues, function(err, res) {
...

Mettre à jour de nombreux documents

Pour mettre à jour tous les documents répondant aux critères de la requête, utilisez la updateMany()méthode.

Exemple

Mettez à jour tous les documents dont le nom commence par la lettre "S":

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  var myquery = { address: /^S/ };
  var newvalues = {$set: {name: "Minnie"} };
  dbo.collection("customers").updateMany(myquery, newvalues, function(err, res) {
    if (err) throw err;
    console.log(res.result.nModified + " document(s) updated");
    db.close();
  });
});

Enregistrez le code ci-dessus dans un fichier appelé "demo_update_many.js" et exécutez le fichier :

Exécutez "demo_update_many.js"

C:\Users\Your Name>node demo_update_many.js

Ce qui vous donnera ce résultat :

2 document(s) updated

L'objet de résultat

Les méthodes updateOne()et renvoient un objet qui contient des informations sur la manière dont l'exécution a affecté la base de données.updateMany()

La plupart des informations ne sont pas importantes à comprendre, mais un objet à l'intérieur de l'objet est appelé "résultat" qui nous indique si l'exécution s'est bien déroulée et combien de documents ont été affectés.

L'objet de résultat ressemble à ceci :

{ n: 1, nModified: 2, ok: 1 }

Vous pouvez utiliser cet objet pour renvoyer le nombre de documents mis à jour :

Exemple

Renvoie le nombre de documents mis à jour :

console.log(res.result.nModified);

Ce qui produira ce résultat :

2