Nodejs and MongoDB, A Beginner’s Approach

This is not a book and I didn’t try to sell a book to you.

The term “A Beginner’s Approach” reflects my self when finding a hard way out to connect Nodejs to MongoDB. There are lots of libraries available to use when connecting Nodejs to MongoDB. If you were trying to make your feet wet, and that’s what I’m doing until today, you probably want to try this approach. I can’t promise anything but at least, you will not get a headache.

First, read about Nodejs. After that, MongoDB. If you’re already familiar with it, skip it and install both on your system. There maybe vary depending on your system. If you use Mac and Homebrew (or MacPorts), you’re lucky. Just do this:

$ brew install node

to install Nodejs, and:

$ brew install mongodb


$ sudo port install mongodb

to install MongoDB.

Next, you should familiar on how Nodejs and MongoDB works. Playing a whole day is probably enough to grasp the idea if you are a Javascript-ers and you are familiar with web server programming. If you aren’t, you should have no problem learning them in a short time, probably a week or two, if you willing to.

Okay, here’s the fun part. Oh wait, we need to install one more additional driver to connect from Nodejs to MongoDB. I’ve picked node-mongodb-native by christkv and I recommend you to install it too. It’s easy.

$ npm install mongodb

Now we’re ready to go.

To prepare a connection to MongoDB, you can create variables that define the database and its server, like this one:

and then instantiate a database client:

'test' is your database name. This is usually available from the first time you install MongoDB. The IP address is obvious. 27017 refers to the specific port of your database.

Next, you may want to define the action for insert, remove, update, and show the data. Here’s mine.

Now, the final step is to open the connection and do what you want with your already-defined action above.

You’ve noticed that there is a 'test_insert' parameter. 'test_insert' is your collection name (you can go with different name though). You can think a collection just like a table in SQL database, but without a relation (that’s why we often call it NoSQL because it has no relationship like SQL does).

These codes are far from perfect. I simplify it for the sake of, surprise surprise, simplicity and easy to understand. I uploaded the source code to my Github too. So if you want to try a little bit further, you can do whatever you like, based on my code, to explore more about Nodejs and MongoDB.

Any comments or questions are definitely welcome.

Update: I forgot to mention that for the sake of simplicity, I’m not including a callback following some operations above. Christkv, the author of the native driver I’ve used here, has give us a clue on his comment below so I just want to say that if you want (and ready) to know more about callback, please read here.

Also read...


  1. Nice tutorial but I think you have missed one thing here: the callback parameter. Every actions you mentioned above need a callback to handle the operation results. I expect for more article on this.

    Anyway, this is a good start for a beginner to learn about node and mongodb.

  2. Pingback: Octave and Gnuplot in Mac | Ksetyadi's [B]Log

    • Well noted. I’ve updated the post so there’s a “caution” near the end of this post about callback to simplify things up. I should write a follow-up post then! Thanks a bunch, Chris!

  3. Pingback: Cheatsheet: 2011 11.01 ~ 11.07 - gOODiDEA.NET

  4. Pingback: async I/O News » Nodejs and MongoDB, A Beginner’s Approach

  5. I can’t get this code to work. Nothing is ever printed to the console. When the ‘client’ is initialized, should the values provided work or do I need to change it to my current IP address?

    var Db = require(‘mongodb’).Db;
    var Server = require(‘mongodb’).Server;

    var client = new Db(‘test’, new Server(‘’, 27017, {}));

    var insertData = function(err, collection) {
    console.log(“Inserting data”);
    collection.insert({name: “Kristiono Setyadi”});

    var listAllData = function(err, collection) {
    collection.find().toArray(function(err, results) {

    Anyone know why this isn’t printing anything?

  6. Nice post, dude! To me, as a beginner, you were explaining exactly what I need. After that, I just find the advance tutorial about this. Thanks!

  7. Pingback: Welcome to 2012. Welcome New Resolutions. | Ksetyadi's [B]Log

  8. Please change ‘client’ to ‘pClient’ in this snippet above:, pClient) {
    client.collection(‘test_insert’, insertData);
    client.collection(‘test_insert’, removeData);
    // etc.

    Thanks for your article

  9. Pingback: node.js » Agile Mobile Developer

  10. thanks its good for me. but i am totally confuse on this :-{} at below line:-
    var client = new Db(‘test’, new Server(‘’, 27017, {});

    but finally i know its a callback function.
    I think you should mention this. (because nodejs basically based on callback function. I am new in this technology, may be i am wrong about nodejs. )

  11. Nice post :) But, I am geeting a waring message “Failed to load c++ bson extension, using pure JS version”? Could you please help me to fix it out.

  12. Pingback: What is mongodb? | Sathya's Log

  13. An awesome work in explaining how to connect mongodb and nodejs in simplest way.

    I look forward for you on more blogs on nodejs.

    Thanks a lot for this article! :)

  14. LlistAllData returns null :(

    when I printed the error message it return
    { [MongoError: Connection Closed By Application] name: ‘MongoError’ }

    But update, Insert, remove works perfectly :)


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.