It supports Server-side JavaScript execution. Which allows a developer to use a single programming language for both client and server side code.

MongoDb is easily installable.

History

Development of MongoDB began in October 2007 by 10gen. The first public release was in February 2009.

Obtain MongoDb

You can download MongoDb from http://www.mongodb.org/downloads. As of this writing, it supports following platforms:

OS X 32-bit

OS X 64-bit

Linux 32-bit

Linux 64-bit

Windows 32-bit

Windows 64-bit

Solaris i86pc

Solaris 64

You can download the source and install MongoDb from that too.

MongoDB : Databases, Schemas and Tables

Databases : MongoDB is a document-oriented DBMS, with JSON-like objects comprising the data model, rather than RDBMS tables. MongoDB does not support joins nor transactions. However, it features secondary indexes, an expressive query language, atomic writes on a per-document level, and fully-consistent reads. MongoDB uses BSON, a binary object format similar to, but more expressive than JSON.

Schemas : MongoDB uses dynamic schemas. We can create collections without defining the structure, i.e. the fields or the types of their values, of the documents. You can change the structure of documents simply by adding new fields or deleting existing ones. Documents in a collection need unique set of fields.

Tables : MongoDB database stores its data in collections not in tables The collections are the rough equivalent of RDBMS tables. A collection holds one or more documents, which corresponds to a record or a row in a relational database table, and each document has one or more fields, which corresponds to a column in a relational database table.

MongoDB and ACID transactions

MongoDB does not support multi-document transactions, but provides atomic operations on a single document. Often these document-level atomic operations are sufficient to solve problems that would require ACID transactions in a relational database.

In MongoDB, you can embed related data in nested arrays or nested documents within a single document and update the entire document in a single atomic operation. Relational databases might represent the same kind of data with multiple tables and rows, which would require transaction support to update the data atomically.

MongoDB allows clients to read documents inserted or modified before it commits these modifications to disk, regardless of write concern level or journaling configuration. Applications may observe two classes of behaviors :

MongoDB will allow clients to read the results of a write operation before the write operation returns for systems with multiple concurrent readers and writers

If the mongodb terminates before the journal commits, even if a write returns successfully, queries may have read data that will not exist after the mongodb restarts.

Other database systems refer to these isolation semantics as read uncommitted. For all inserts and updates, MongoDB modifies

each document in isolation

clients never see documents in intermediate states

For multi-document operations, MongoDB does not provide any multi-document transactions or isolation. When mongodb returns a successful journaled write concern, the data is fully committed to disk and will be available after mongodb restarts. For replica sets, write operations are durable only after a write replicates and commits to the journal of a majority of the voting members of the set.

MongoDB and caching

MongoDB has no configurable cache. MongoDB uses all free memory on the system automatically by way of memory-mapped files. Operating systems use the same approach with their file system caches. MongoDB keeps all of the most recently used data in RAM. If you have created indexes for your queries and your working data set fits in RAM, MongoDB serves all queries from memory.

MongoDB does not implement a query cach, it serves all queries directly from the indexes and/or data files.

Tools

There are several tools available for managing MongoDB.

Monitoring

Network and System monitoring tool Munin has a plugin available for MongoDB.

Distributes high-performance system monitoring tool Gangila has a plugin available for MongoDB.

Open source web based graphic tool Cacti, used to graph CPU load, network bandwidth utilization, has a plugin available for MongoDB.

GUI

Fang of Mongo is a web-based user interface built with Django and jQuery.

Futon4Mongo is a clone of the CouchDB Futon web interface for MongoDB.

Mongo3 is a Ruby-based interface.

MongoHub is a native OS X application for managing MongoDB.

Opricot is a browser-based MongoDB shell written in PHP.

phpMoAdmin is a PHP based MongoDb management tool.

MongoVUE is a Windows based GUI to work with MongoDB.

RockMongo is a PHP based MongoDB administration GUI tool.

MongoDB in production

Here is a list of a few MongoDB production deployment :

Craiglist uses MongoDb to archive there billions of records.

FourSquare, a location based social networking site, uses MongoDb to shrade there data over a number of machines on Amazon EC2.

bit.ly, a web based url shortening service, uses MongoDb for storing their data.

spike.com, a MTV Network's associate, uses MongoDB.

Intuit, a large provider of software and services for small businesses and individuals, uses MongoDB to track user engagement and activity in real-time across its network of websites for small businesses.

sourceforge.net, a site to find, create and publish Open Source Software for free, uses MongoDB for back-end storage.

etsy.com, a site to buy and sell handmade items, uses MongoDB.

The New York Times, one of the leading online news portal, is using MongoDB in a form-building application for photo submissions.