Did you know? DZone has great portals for Python, Cloud, NoSQL, and HTML5!
NoSQL Zone is brought to you in partnership with:

A Yahoo! employee. Currently "playing" as a mobile engineer. Posts and comments here are my own and not necessarily represent my employer, Yahoo!. You, or any other people, don't have to be agree with what I'm posting or commenting on. Kristiono has posted 3 posts at DZone. You can read more from them at their website. View Full User Profile

Nodejs and MongoDB, A Beginner’s Approach

12.02.2011
Email
Views: 8160
  • submit to reddit
This article is part of the DZone NoSQL Resource Portal, which is brought to you in collaboration with Neo Technology and DataStax. Visit the NoSQL Resource Portal for additional tutorials, videos, opinions, and other resources on this topic.

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

or

$ 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:

var Db = require('mongodb').Db;
var Server = require('mongodb').Server;

and then instantiate a database client:

var client = new Db('test', new Server('127.0.0.1', 27017, {}));

'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.

var insertData = function(err, collection) {
    collection.insert({name: "Kristiono Setyadi"});
    collection.insert({name: "Meghan Gill"});
    collection.insert({name: "Spiderman"});
    // you can add as many object as you want into the database
}

var removeData = function(err, collection) {
    collection.remove({name: "Spiderman"});
}

var updateData = function(err, collection) {
    collection.update({name: "Kristiono Setyadi"}, {name: "Kristiono Setyadi", sex: "Male"});
}

var listAllData = function(err, collection) {
    collection.find().toArray(function(err, results) {
        console.log(results);
    });
}
 

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

client.open(function(err, pClient) {
    client.collection('test_insert', insertData);
    client.collection('test_insert', removeData);
    // etc.
}
 

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.

Published at DZone with permission of its author, Kristiono Setyad.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Neo Technology and DataStax are leading the charge for the NoSQL movement.  You can learn more about the Neo4j Graph Database in the project discussion forums and try out the new Spring Data Neo4j, which enables POJO-based development.  You can also see how Apache Cassandra, a ColumnFamily data store, is pushing the boundaries of persistence with cloud capabilities and deployments at SocialFlow and Netflix.