The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

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

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