Introduction
MongoDB is a document-orientated database written with scalability and high-performance in mind. It is one of a growing number of NoSQL systems – a database that does not rely on SQL or relational theory at all.
Getting a MongoDB server working with PHP on Mac OS X is relatively straightforward, and this tutorial shows you how.
Installing the MongoDB Server
The first step requires you to download and install the actual MongoDB system. The example shown below downloads v2.0.0 64 bit binaries for OS X. For other binaries, please check out the MongoDB Downloads page.
cd /tmp curl -O http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-2.0.0.tgz tar zxvf mongodb-osx-x86_64-2.0.0.tgz sudo mv mongodb-osx-x86_64-2.0.0 /usr/local/mongodb mkdir /usr/local/mongodb/data
Configuring the MongoDB server
We need to create a small configuration file so that MongoDB knows where its data files reside. Create the file /usr/local/mongodb/mongod.conf
and add the following line:
dbpath = /usr/local/mongodb/data
Starting MongoDB
To manually start the MongoDB server, use the following command:
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongod.conf
This will start the server and will by default log all output to STDOUT.
Installing the MongoDB PHP Extension
Installing the PHP extension is simple:
sudo pecl install mongo
Once this has completed, add the following line to your /etc/php.ini
file:
extension=mongo.so
Restart apache using sudo apachectl restart
, and the extension should be available. This can be verified with the phpinfo
call:
Example PHP script
To test your setup, the following simple script can be used to create a new collection and add two new records:
<?php // connect $m = new Mongo(); // select a database $db = $m->comedy; // select a collection (analogous to a relational database's table) $collection = $db->cartoons; // add a record $obj = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" ); $collection->insert($obj); // add another record, with a different "shape" $obj = array( "title" => "XKCD", "online" => true ); $collection->insert($obj); // find everything in the collection $cursor = $collection->find(); // iterate through the results foreach ($cursor as $obj) { echo $obj["title"] . "\n"; } ?>
The script should output the following:
Calvin and Hobbes XKCD
And that’s it! You now have a working MongoDB setup on Mac OS X.
For more information on the PHP extension for MongoDB, please see the following pages in the PHP Manual: