A Document object's fields can represent a collection of both simple and complex data types,
as well as other Document objects. Given the following data (document) structure:
{{{
{
_id: 12345.
name: 'Acme, Inc.',
employees: {
'Larry': { email: 'larry@acme.com' },
'Curly': { email: 'curly@acme.com' },
'Moe': { email: 'moe@acme.com' }
}
}
}}}
You can query the object as follows:
{{{$acme = Company::find(12345);}}}
This returns a Document object, populated with the raw representation of the data.
{{{print_r($acme->to('array'));
Yields:
array(
'_id' => 12345,
'name' => 'Acme, Inc.',
'employees' => array(
'Larry' => array('email' => 'larry@acme.com'),
'Curly' => array('email' => 'curly@acme.com'),
'Moe' => array('email' => 'moe@acme.com')
)
)}}}
As with other database objects, a Document exposes its fields as object properties, like so:
{{{echo $acme->name; // echoes 'Acme, Inc.'}}}
However, accessing a field containing a data set will return that data set wrapped in a
sub-Document object., i.e.:
{{{$employees = $acme->employees;
returns a Document object with the data in 'employees'}}}