02Geek HTML5 and JavaScript, TypeScript, React, Flash, ActionScript online School

mongoDB Driver in NodeJS

MongoDB Driver in Node.js

Welcome to this tutorial, where we'll guide you through integrating a MongoDB driver into a Node.js environment. By the end of this guide, you'll be well-equipped to handle MongoDB connections, update collections, and use bulk operations—all within Node.js. Let's jump right in!

1. Setting Up Your Project

First, initialize your Node.js project. We'll use npm to create the initial setup.

npm init -y

This command will create a default package.json file for our project. Next, we need to install the MongoDB driver. Instead of using the official mongodb driver, we'll use the mongojs driver for simplicity.

npm install mongojs --save

Note: In recent projects, it's recommended to use the official MongoDB driver, as it is actively maintained and updated with the latest features. The syntax and feature set may vary slightly, but it generally offers better support and performance.

2. Connecting to the Database

Once you have installed mongojs, it's time to connect to your MongoDB database. Open or create your index.js file and add the following code:

const mongojs = require('mongojs');

// Set up the database connection
const db = mongojs('mongo_sample', ['users']);

In the above snippet:

  • We're requiring the mongojs package.
  • We're connecting to the mongo_sample database and specifying the users collection, which will reduce overhead by limiting the collections loaded during initialization.

Note: For modern projects, using the MongoClient from the official MongoDB driver allows more robust connection pooling and better support for modern features like transactions.

3. Bulk Operations

The bulk operations feature is useful when you need to perform multiple modifications at once. Let's initialize a bulk operation and add some new users.

const bulk = db.users.initializeOrderedBulkOp();

bulk.insert({ name: 'Ben', age: 33, height: 181, charmFactor: 5 });
bulk.insert({ name: 'David', age: 29, height: 175, charmFactor: 8 });
bulk.insert({ name: 'Gloria', age: 27, height: 160, charmFactor: 7 });

bulk.execute((err, res) => {
  if (err) {
    console.error('Error executing bulk operation:', err);
  } else {
    console.log('Bulk operation completed successfully:', res);
  }
});

In the above code:

  • We initialize a bulk operation with initializeOrderedBulkOp(). This ensures that the operations are executed in sequence.
  • We're inserting multiple user records.
  • Finally, we call execute() to run the bulk operation and provide a callback to handle errors or log the response.

Important Update: In the official MongoDB driver, bulk operations can be performed using bulkWrite(). It provides more flexibility and an easier syntax.

4. Updating Collections

In this section, we want to update a specific user's age. Let's say Ben is celebrating his birthday, and we need to update his age from 33 to 34.

db.users.update({ name: 'Ben' }, { $set: { age: 34 } }, (err, res) => {
  if (err) {
    console.error('Failed to update Ben's age:', err);
  } else {
    console.log('Ben's age updated successfully:', res);
  }
});
  • We use $set to modify Ben's age property without affecting other fields.
  • This update operation is helpful when you need to make incremental changes instead of overwriting the whole document.

Note: When using the official MongoDB driver, updateOne() and updateMany() are used for similar operations with more consistent support for modern MongoDB features.

5. Removing Records

Suppose we need to delete users under 30 years of age, such as David and Gloria. We can use a conditional delete operation as follows:

db.users.remove({ age: { $lt: 30 } }, (err, res) => {
  if (err) {
    console.error('Error removing users:', err);
  } else {
    console.log('Users removed successfully:', res);
  }
});

In this snippet:

  • We're removing all users whose age is less than 30 using $lt (less than).

Important Update: In the latest versions of MongoDB, the deleteOne() and deleteMany() methods are recommended for greater clarity and more consistent API usage.

6. Callback vs. Asynchronous Programming

Node.js is an asynchronous environment, meaning it does not wait for an operation to complete before moving on. Therefore, most MongoDB interactions are handled using callbacks, as seen in the previous examples. However, modern Node.js applications prefer async/await syntax for better readability.

Here's an example of how you could rewrite the update function using async/await:

async function updateAge() {
  try {
    const res = await db.users.updateAsync({ name: 'Ben' }, { $set: { age: 34 } });
    console.log('Ben's age updated successfully:', res);
  } catch (err) {
    console.error('Failed to update Ben's age:', err);
  }
}

Note: Some drivers require a wrapper or update to support promises natively. It is recommended to use the official driver to fully leverage async/await support.

Conclusion

Congratulations! You've successfully learned how to work with MongoDB in a Node.js environment. We covered installing a MongoDB driver, setting up a connection, performing bulk operations, updating documents, and removing records—all crucial skills for a full-stack developer.

Remember that, while mongojs was a great learning tool in 2016, newer projects should consider adopting the official MongoDB driver for improved support, modern features, and performance. Keep pushing your skills further and happy coding!

Ready to Level Up Your Skills?

Join thousands of learners on 02GEEK and start your journey to becoming a coding expert today!

Enroll Now for Free!

Installing MongoDB

Learn how to install MongoDB, including prerequisites and key steps for setting up the database on your machine.

10:05

Creating a Mongo Database

This video guides you through creating your first MongoDB database using the built-in driver.

04:21

Inserting Collections and Documents in MongoDB

Learn how to insert collections and documents in MongoDB, and understand the core concepts of collections, documents, and database structure.

09:07

Adding is great, but how do you find things

Learn how to effectively search and retrieve documents in MongoDB collections, using commands like find, pretty, and limiting results.

05:12

Finding complicated things with operators

Learn how to use advanced operators in MongoDB to find items more accurately.

07:03

Deleting Documents, Collections and Databases

Learn how to properly delete documents, collections, and databases in MongoDB. Understand best practices and methods like deleteOne(), deleteMany(), and drop().

03:09

mongoDB Driver in NodeJS

Learn how to integrate MongoDB driver with Node.js and perform bulk operations. Final section in the full stack series.

16:05