Aggiornamento di Node.js MongoDB
Aggiorna documento
Puoi aggiornare un record, o un documento come viene chiamato in MongoDB, usando il updateOne()
metodo.
Il primo parametro del updateOne()
metodo è un oggetto query che definisce quale documento aggiornare.
Nota: se la query trova più di un record, viene aggiornata solo la prima occorrenza.
Il secondo parametro è un oggetto che definisce i nuovi valori del documento.
Esempio
Aggiorna il documento con l'indirizzo "Valley 345" in name="Mickey" e 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();
});
});
Salva il codice sopra in un file chiamato "demo_update_one.js" ed esegui il file:
Esegui "demo_update_one.js"
C:\Users\Your Name>node demo_update_one.js
Che ti darà questo risultato:
1 document updated
Aggiorna solo campi specifici
Quando si utilizza l' $set
operatore, vengono aggiornati solo i campi specificati:
Esempio
Aggiorna l'indirizzo da "Valley 345" a "Canyon 123":
...
var myquery = { address: "Valley 345" };
var newvalues
= { $set: { address: "Canyon 123" } };
dbo.collection("customers").updateOne(myquery,
newvalues, function(err, res) {
...
Aggiorna molti documenti
Per aggiornare tutti i documenti che soddisfano i criteri della query, utilizzare il updateMany()
metodo.
Esempio
Aggiorna tutti i documenti in cui il nome inizia con la lettera "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();
});
});
Salva il codice sopra in un file chiamato "demo_update_many.js" ed esegui il file:
Esegui "demo_update_many.js"
C:\Users\Your Name>node demo_update_many.js
Che ti darà questo risultato:
2 document(s) updated
L'oggetto risultato
I metodi updateOne()
e
updateMany()
restituiscono un oggetto che contiene informazioni su come l'esecuzione ha influenzato il database.
La maggior parte delle informazioni non è importante da capire, ma un oggetto all'interno dell'oggetto è chiamato "risultato" che ci dice se l'esecuzione è andata bene e quanti documenti sono stati interessati.
L'oggetto risultato è simile a questo:
{ n: 1, nModified: 2, ok: 1 }
Puoi utilizzare questo oggetto per restituire il numero di documenti aggiornati:
Esempio
Restituire il numero di documenti aggiornati:
console.log(res.result.nModified);
Che produrrà questo risultato:
2