Al Newkirk > MongoDBI-0.0.12 > MongoDBI

Download:
MongoDBI-0.0.12.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 0.0.12   Source   Latest Release: MongoDBI-0.02

NAME ^

MongoDBI - A proper ODM (Object-Document-Mapper) for MongoDB

VERSION ^

version 0.0.12

SYNOPSIS ^

... in CDDB.pm

    package CDDB;

    use MongoDBI;
    
    app {
    
        # shared mongodb connection
        database => {
            name => 'mongodbi_cddb',
            host => 'mongodb://localhost:27017'
        },
    
        # load child doc classes
        classes => {
            self => 1, # loads CDDB::*
            load => ['Other::Namespace']
        }
    
    };
    
    1;

... in CDDB/Album.pm

    package CDDB::Album;
    
    use MongoDBI::Document;
    
    # collection name
    store 'albums';
    
    # required fields
    key 'title',    is_str,  is_req;
    key 'released', is_date, is_req;
    
    # optional fields
    key 'rating', is_int, default => 1;
    
    # embedded documents
    embed 'tracks', class => 'CDDB::Track', type => 'multiple';
    
    # related artist document
    has_one 'band', class => 'CDDB::Artist';
    
    # stored query
    filter 'top_rated' => sub {
        
        my ($filter, $self, @args) = @_;
        
        $filter->where('rating$gte' => 5 )
        
    };
    
    1;

... and finally in your script.pl

    use DateTime;
    
    my $cddb = CDDB->new;
    
    my $cds  = $cddb->class('album'); # grabs CDDB::Album
    
    my $cd = $cds->new(
        title    => 'Just doin my job boss',
        released => DateTime->now
    );
    
    $cd->insert;
    
    # search using stored query (aka filter) and loop
    $cds->search('top_rated')->foreach_document(sub{    
        print shift->{title}, "\n"
    });

DESCRIPTION ^

Why MongoDB? "MongoDB has the best features of document, key/value and relational databases."

MongoDBI is an Object-Document-Mapper (ODM) for MongoDB. It allows you to create Moose-based classes to interact with MongoDB databases. Born out of the frustration of waiting for someone else to create a proper MongoDB modeling framework, I decided to bite-the-bullet and try my hand at it.

At-a-glance, most will enjoy MongoDBI for its ability to easily model classes while leveraging the power of MongoDB's schemaless and expeditious document-based design, dynamic queries, and atomic modifier operations.

Also noteworthy is MongoDBI's ease-of-use, chainable search facilities (filters), automated indexing, moose-integration (inheritance support, etc), lean document updates via dirty field tracking, and ability for each class to be configured to use a different database and connection, etc.

This class, MongoDBI, sub-classes MongoDBI::Application, please review that module for more usage information.

AUTHOR ^

Al Newkirk <awncorp@cpan.org>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2011 by awncorp.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: