THE WORLD'S LARGEST WEB DEVELOPER SITE

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