GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Mongoose::Join(3) User Contributed Perl Documentation Mongoose::Join(3)

Mongoose::Join - simple class relationship resolver

    package Author;
    use Moose;
    with 'Mongoose::Document';
    has 'articles' => (
        is      => 'rw',
        isa     => 'Mongoose::Join[Article]',
        default => sub { Mongoose::Join->new( with_class => 'Article' ) }
    );

This module can be used to establish relationships between two "Mongoose::Document" classes. It should not be used with "Mongoose::EmbeddedDocument" classes.

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

Attention: the relationship attribute needs to be initialized to an instance of "Mongoose::Join" before it can be used.

Take a look at Mongoose::Class, it has nice syntatic sugar that does most of the initialization behind the scenes for you.

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

Delete from the relationship list.

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

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.

Count relations.

Just like find, but returns the first row found.

Alias to "find_one"

    $first_cd = $artist->cds->first;

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

    my @cds = $artist->cds->all;

Same as "all", but returns a HASH instead of an ARRAY. The hash will be indexed by the key name sent as the first parameter. The hash value contains exactly one object. In case duplicate rows with the same key value are found, the resulting hash will contain the first one found.

    # ie. returns $cds{'111888888292adf0000003'} = <CD Object>;
    my %cds = $artist->cds->hash_on( '_id' => { artist=>'Joe' });

    # ie. returns $joe_cds{'Title1'} = <CD Object>;
    my %joe_cds = $artist->cds->hash_on( 'title' => { artist=>qr/Joe/ });

Similar to "hash_on", but returns a hash with ALL rows found, grouped by the key.

    # ie. returns $cds{'Title1'} = [ <CD1 Object>, <CD2 Object>, ... ];
    my %cds = $artist->cds->hash_array( 'title' => { artist=>'Joe' });

Hash values are ARRAYREFs with 1 or more rows.

Run a MongoDB "query" on the joint collection.

Returns the MongoDB::Collection for the joint collection.

Return the collection name for the joint Mongoose::Document.
2018-10-08 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.