In addition to Scala I decided to mess around with MongoDB as well. This post is about how to install MongoDB as a service on Windows 8. BTW this should also work exactly the same on Windows 7

Here is what wikipedia has to say about MongoDB

MongoDB (from “humongous”) is an open source document-oriented database system developed and supported by 10gen. It is part of the NoSQL family of database systems. Instead of storing data in tables as is done in a “classical” relational database, MongoDB stores structured data as JSON-like documents with dynamic schemas (MongoDB calls the format BSON), making the integration of data in certain types of applications easier and faster.

Here is what MongoDB is about according to their site

MongoDB (from “humongous”) is a scalable, high-performance, open source NoSQL database. Written in C++, MongoDB features:

Document-Oriented Storage »
JSON-style documents with dynamic schemas offer simplicity and power.

Full Index Support »
Index on any attribute, just like you’re used to.

Replication & High Availability »
Mirror across LANs and WANs for scale and peace of mind.

Auto-Sharding »
Scale horizontally without compromising functionality.

Querying »
Rich, document-based queries.

Fast In-Place Updates »
Atomic modifiers for contention-free performance.

Map/Reduce »
Flexible aggregation and data processing.

GridFS »
Store files of any size without complicating your stack.

To get started download MongoDB here: http://www.mongodb.org/downloads

If you are running the 64 bit version of Windows 7,8 or Windows Server 2008 R2 and higher then choose the *2008R2+ link

Once you have MongoDB downloaded it is time to extract it. I created a NoSQL folder on my C Drive, here is where MongoDB and other NoSQL databases will live. Extract the zipfile into the C:|NoSQL folder and rename the folder to mongodb. In the mongodb folder you should have the following

bin
GNU-AGPL-3.0
README
THIRD-PARTY-NOTICES

MongoDB file folder contents

After you are done with that you need to create a data folder, inside that folder you need a db folder. Your db folder would be in this location C:NoSQLmongodbdatadb

Let’s see if we can get MongoDB to start up.
Open up a Command Prompt (WinKey + X + C) and paste this in
C:NoSQLmongodbbinmongod.exe –dbpath C:NoSQLmongodbdata

Running that should trigger a firewall warning

MongoDB firewall warning

Check Private Networks and click Allow Access

Your Command Prompt window should have the following

C:UsersDenis>C:NoSQLmongodbbinmongod.exe –dbpath C:NoSQLmongodbdata
Sat Jan 05 12:12:25 [initandlisten] MongoDB starting : pid=5780 port=27017 dbpat
h=C:NoSQLmongodbdata 64-bit host=Denis
Sat Jan 05 12:12:25 [initandlisten] db version v2.2.2, pdfile version 4.5
Sat Jan 05 12:12:25 [initandlisten] git version: d1b43b61a5308c4ad0679d34b262c5a
f9d664267
Sat Jan 05 12:12:25 [initandlisten] build info: windows sys.getwindowsversion(ma
jor=6, minor=1, build=7601, platform=2, service_pack=’Service Pack 1′) BOOST_LIB
_VERSION=1_49
Sat Jan 05 12:12:25 [initandlisten] options: { dbpath: “C:NoSQLmongodbdata” }

Sat Jan 05 12:12:25 [initandlisten] journal dir=C:/NoSQL/mongodb/data/journal
Sat Jan 05 12:12:25 [initandlisten] recover : no journal files present, no recov
ery needed
Sat Jan 05 12:12:26 [initandlisten] waiting for connections on port 27017
Sat Jan 05 12:12:26 [websvr] admin web console waiting for connections on port 2
8017

As you can see it is working, hit CTRL + C inside the Command Prompt to stop MongoDB, you should see the following

Sat Jan 05 12:13:24 Ctrl-C signal
Sat Jan 05 12:13:24 [consoleTerminate] got CTRL_C_EVENT, will terminate after cu
rrent cmd ends
Sat Jan 05 12:13:24 [consoleTerminate] now exiting
Sat Jan 05 12:13:24 dbexit:
Sat Jan 05 12:13:24 [consoleTerminate] shutdown: going to close listening socket
s…
Sat Jan 05 12:13:24 [consoleTerminate] closing listening socket: 352
Sat Jan 05 12:13:24 [consoleTerminate] closing listening socket: 372
Sat Jan 05 12:13:24 [consoleTerminate] shutdown: going to flush diaglog…
Sat Jan 05 12:13:24 [consoleTerminate] shutdown: going to close sockets…
Sat Jan 05 12:13:24 [consoleTerminate] shutdown: waiting for fs preallocator…
Sat Jan 05 12:13:24 [consoleTerminate] shutdown: lock for final commit…
Sat Jan 05 12:13:24 [consoleTerminate] shutdown: final commit…
Sat Jan 05 12:13:24 [consoleTerminate] shutdown: closing all files…
Sat Jan 05 12:13:24 [consoleTerminate] closeAllFiles() finished
Sat Jan 05 12:13:24 [consoleTerminate] journalCleanup…
Sat Jan 05 12:13:24 [consoleTerminate] removeJournalFiles
Sat Jan 05 12:13:24 [consoleTerminate] shutdown: removing fs lock…
Sat Jan 05 12:13:24 dbexit: really exiting now

Creating the

MongoDB Windows Service

Now it is time to create the MongoDB Windows Service. In the C:NoSQLmongodb folder create a log folder.

Run the following in a Command Prompt

echo logpath=C:NoSQLmongodblogmongo.log > C:NoSQLmongodbmongod.cfg

Open up the config file C:NoSQLmongodbmongod.cfg and add this line
dbpath=C:NoSQLmongodbdata

We need to add this line because by default mongodb will look in C:data

The file should have two lines in it, it should look like this
logpath=C:NoSQLmongodblogmongo.log
dbpath=C:NoSQLmongodbdata

MongoDB configuration file

In a Command Prompt with elevated privileges (Winkey + X + A) run the following

C:NoSQLmongodbbinmongod.exe –config C:NoSQLmongodbmongod.cfg –install

Now run the following command

net start mongodb

You should get back the following message

The Mongo DB service was started successfully.

If you look at the services (either click on Services from Control PanelSystem and SecurityAdministrative Tools or type services from the start screen), you should see the following

MongoDB running as a windows 8 service

Congratulations, the service is now running

Let’s take it for a test, open up a Command Prompt and paste the following C:NoSQLmongodbbinmongo

You should see
MongoDB shell version: 2.2.2
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type “help”.
For more comprehensive documentation, see

http://docs.mongodb.org/

Questions? Try the support group

http://groups.google.com/group/mongodb-user

Type db and hit enter, you should see the following
test

Type show dbs and hit enter, you should see the following
local (empty)

Type use test and hit enter, you should see the following
switched to db test

Type k = { x : 5 } and hit enter, you should see the following
{ “x” : 5 }

Type j = { name : “Denis”} and hit enter, you should see the following
{ “name” : “Denis” }

Now let’s insert j and k into the database
Type db.things.insert( j ) and hit enter
Type db.things.insert( k ) and hit enter

Now let’s see what we inserted

Type show collections and hit enter, you should see the following
system.indexes
things

Type db.things.find() and hit enter, you should see the following
{ “_id” : ObjectId(“50e861b1065e4ad1d2279af6″), “name” : “Denis” }
{ “_id” : ObjectId(“50e861b9065e4ad1d2279af7″), “x” : 5 }

Let’s use a loop to insert another 9 items
Type for (var i = 1; i <= 9; i++) db.things.insert( { x : 5 , j : i } ) and hit enter

Type db.things.find() and hit enter, you should see the following
{ “_id” : ObjectId(“50e861b1065e4ad1d2279af6″), “name” : “Denis” }
{ “_id” : ObjectId(“50e861b9065e4ad1d2279af7″), “x” : 5 }
{ “_id” : ObjectId(“50e86200065e4ad1d2279af8″), “x” : 5, “j” : 1 }
{ “_id” : ObjectId(“50e86200065e4ad1d2279af9″), “x” : 5, “j” : 2 }
{ “_id” : ObjectId(“50e86200065e4ad1d2279afa”), “x” : 5, “j” : 3 }
{ “_id” : ObjectId(“50e86200065e4ad1d2279afb”), “x” : 5, “j” : 4 }
{ “_id” : ObjectId(“50e86200065e4ad1d2279afc”), “x” : 5, “j” : 5 }
{ “_id” : ObjectId(“50e86200065e4ad1d2279afd”), “x” : 5, “j” : 6 }
{ “_id” : ObjectId(“50e86200065e4ad1d2279afe”), “x” : 5, “j” : 7 }
{ “_id” : ObjectId(“50e86200065e4ad1d2279aff”), “x” : 5, “j” : 8 }
{ “_id” : ObjectId(“50e86200065e4ad1d2279b00″), “x” : 5, “j” : 9 }

This post was mostly to show you how you can setup MongoDB to run as a service on Windows 8. In subsequent posts we will take a look at how to do more interesting stuff with MongoDB. Stay tuned……