NAME

Mandel::Relationship::HasMany - A field relates to many other mongodb document

DESCRIPTION

Mandel::Relationship::HasMany is a class used to describe the relationship between one document that has a relationship to many other documents. The connection between the documents is described in the database using DBRef.

DATABASE STRUCTURE

A "person" that has many "cats" will look like this in the database:

mongodb# db.persons.find();
{ "_id" : ObjectId("53529f28c5483e4977020000") }

mongodb# db.cats.find({ "person.$id": ObjectId("53529f28c5483e4977020000") })
{
  "_id" : ObjectId("53529f28c5483e5077040000"),
  "person" : DBRef("persons", ObjectId("53529f28c5483e4977020000"))
}
{
  "_id" : ObjectId("6432574384483e4978010000"),
  "person" : DBRef("persons", ObjectId("53529f28c5483e4977020000"))
}

A "has many" on one side is Mandel::Relationship::BelongsTo on the other side.

SYNOPSIS

Using DSL

package MyModel::Person;
use Mandel::Document;
has_many cats => 'MyModel::Cat';

Using object oriented interface

MyModel::Person->model->relationship(
  "has_many",
  "cats",
  "MyModel::Cat",
);

See also "relationship" in Mandel::Model.

Methods generated

# non-blocking
$person = MyModel::Person->new->add_cats(\%constructor_args, sub {
            my($person, $err, $cat_obj) = @_;
            # ...
          });

$person = MyModel::Person->new->add_cats($cat_obj, sub {
            my($person, $err, $cat_obj) = @_;
            # ...
          });

$person = MyModel::Cat->new->cats(sub {
            my($self, $err, $array_of_cats) = @_;
            # ...
          });

# blocking
$cat_obj = MyModel::Person->new->add_cats(\%args);
$cat_obj = MyModel::Person->new->add_cats($cat_obj);
$array_of_cats = MyModel::Person->new->cats;

$cat_collection = MyModel::Person->new->search_cats;

ATTRIBUTES

Mandel::Relationship::HasMany inherits all attributes from Mandel::Relationship and implements the following new ones.

add_method_name

The name of the method used to add another document to the relationship.

search_method_name

The name of the method used to search related documents.

METHODS

Mandel::Relationship::HasMany inherits all methods from Mandel::Relationship and implements the following new ones.

monkey_patch

Add methods to "document_class" in Mandel::Relationship.

SEE ALSO

Mojolicious, Mango, Mandel::Relationship

AUTHOR

Jan Henning Thorsen - jhthorsen@cpan.org