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