MongoDB Base Model for Zend Framework
I came accross MongoDB a few months ago and it seemed like a perfect fit for many of the projects I am working. Extremely fast inserts, map-reduce for complex queries, and most importantly, scaling is a breeze.
Since I am a Zend Framework guy I created a simple base model class for MongoDB. It is a very simple wrapper, but is effective for what I need. I usually create model classes for each “Collection” just like I would create models for each table in MySQL. Each model class extends from the new MongoDB base class and allows a low level “active directory” type access to MongoDB documents.
Example: We want to create a new document for every visitor that comes into a website that we are tracking. We store those documents in the “visitor” collection.
The first thing we do is create a model for the visitor collection.
class Model_Visitor extends Mongodb_ModelBase {
// If you don't specify the collection name explicitly,
// it will default to the name of the class minus the "Model_" part.
protected static $_collectionName = "visitor";
}Then we can create new documents for that collection
$newVisitor = new Model_Visitor(); $newVisitor->ipAddress = '5.5.5.5'; $newVisitor->save();
You can also query for visitors using static methods:
$oneVisitor = Model_Visitor::findOne();
$allVisitors = Model_Visitor::find();
$someVisitors = Model_Visitor::find(array('ipAddress'=>'5.5.5.5'));Use dot notation for nested values. These two commands do the same thing:
$myVisitor->{'referrer.url'} = 'google.com';
$myVisitor->referrer = array('url'=>'google.com');I thought I would share this with the rest of the world in case someone needed it.
NOTE: The base class makes use of late static binding, which requires PHP 5.3