Skip to content

Instantly share code, notes, and snippets.

@karlseguin
Created October 31, 2011 10:47
Show Gist options
  • Save karlseguin/1327266 to your computer and use it in GitHub Desktop.
Save karlseguin/1327266 to your computer and use it in GitHub Desktop.
Nodejs and MongoDB, A Beginner’s Approach - Mirror

this is a mirror of http://blog.ksetyadi.com/2011/10/nodejs-and-mongodb-a-beginners-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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment