Node.js MongoDB Update
Update Document
You can update records, or documents as it is called in MongoDB, by using
the update()
method.
By default, the update()
method only updates
one document.
The first parameter of the update()
method
is a query object defining which document to update.
The second parameter
is an object defining the new values of the document. By default, all fields in
the
document gets updated, (except the _id
field)
so remember to set the value of every field, otherwise the value will be left
empty.
Example
Update the document with the address "Valley 345" to name="Mickey" and address="Canyon 123":
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mydb";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var myquery = { address: "Valley 345" };
var newvalues = { name:
"Mickey", address: "Canyon 123" };
db.collection("customers").update(myquery,
newvalues, function(err, res) {
if (err) throw err;
console.log(res.result.nModified + " record updated");
db.close();
});
});
Run example »
Save the code above in a file called "demo_update.js" and run the file:
Run "demo_update.js"
C:\Users\Your Name>node demo_update.js
Which will give you this result:
1 record updated
Update Only Specific Fields
To update only selected fields, use the $set
operator to prevent the other
fields from being left empty:
Example
Update the address from "Valley 345" to "Canyon 123":
...
var myquery = { address: "Valley 345" };
var newvalues
= { $set: { address: "Canyon 123" } };
db.collection("customers").update(myquery,
newvalues, function(err, res) {
...
Run example »
Update Multiple Documents
By default the update()
method only updates
the first document that meets the criteria of the query object.
To update all documents that meets the criteria, you must set the
multi
option to true.
The third parameter of the update()
method is an object of options, one of
these options is the multi
option:
Example
Update all documents where the name starts with the letter "S":
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mydb";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var myquery = { address: /^S/ };
var newvalues = {$set: {name:
"Minnie"} };
var myoptions = { multi: true };
db.collection("customers").update(myquery, newvalues, myoptions, function(err,
res) {
if (err) throw err;
console.log(res.result.nModified + " record(s) updated");
db.close();
});
});
Run example »
Save the code above in a file called "demo_update_multi.js" and run the file:
Run "demo_update_multi.js"
C:\Users\Your Name>node demo_update_multi.js
Which will give you this result:
2 record(s) updated
The Result Object
The update()
method returns an object which contains information about how
the execution affected the database.
Most of the information is not important to understand, but one object inside the object is called "result" which tells us if the execution went OK, and how many documents were affected.
The result object looks like this:
{ n: 1, nModified: 1, ok: 1 }
You can use this object to return the number of updated documents:
Example
Return the number of updated documents:
console.log(res.result.nModified);
Which will produce this result:
1