The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Mongoose::Join - simple class relationship resolver

VERSION

version 0.10

SYNOPSIS

    package Author;
    use Moose; with 'Mongoose::Document';
    has 'articles'  => ( is => 'rw', isa => 'Mongoose::Join[Article]' );

DESCRIPTION

This module can be used to parameterize relationships between two Mongoose::Document classes. It should not be used for Mongoose::EmbeddedDocument classes.

All object relationships are stored as reference $id arrays in the parent object, which translates into a performance hit when loading the parent class, but not as much as loading all objects at one as when using an ArrayRef.

METHODS

add

Add (join) a Mongoose::Document object for later saving.

Saving the parent Mongoose::Document will save both.

    my $author = Author->new;
    $author->articles->add( Article->new );
    $author->save; # saves all objects

remove

Delete from the relationship list.

    my $author = Author->find_one;
    my $first_article = $author->articles->find_one;
    $author->articles->remove( $first_article );

find

Run a MongoDB find on the joint collection.

    # searches for articles belonging to this collection
    my $cursor = $author->articles->find({ title=>'foo article' });
    while( my $article = $cursor->next ) {
        ...
    }

Returns a Mongoose::Cursor.

find_one

Just like find, but with a find_one twist.

all

Same as find, but returns an ARRAY with all the results, instead of a cursor.

query

Run a MongoDB query on the joint collection.

collection

Returns the MongoDB::Collection for the joint collection.

with_collection_name

Return the collection name for the joint Mongoose::Document.