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' $set
opé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