Mandango

The easy, powerful and ultrafast ODM for PHP and MongoDB.

Indexes

You can map the indexes also in the config classes, and ensure them easily through the repositories.

Mapping

array(
    'Model\Article' => array(
        'fields' => array(
            'title'   => 'string',
            'content' => 'string',
            'slug'    => 'string',
            'date'    => 'date',
        ),
        'indexes' => array(
            // simple
            array('keys' => array('date' => 1)),
            // with options
            array('keys' => array('slug' => 1), 'options' => array('unique' => 1)),
        ),
    ),
);

You can map indexes also in the embedded documents, the full mongo field name is built automatically:

array(
    'Model\Comment' => array(
        'isEmbedded' => true,
        'fields' => array(
            'name' => 'string',
            'text' => 'string',
            'date' => 'date',
        ),
        'indexes' => array(
            array('keys' => array('date' => 1)),
        ),
    ),
    'Model\Article' => array(
        // ...
        'embeddedsMany' => array(
            'comments' => array('class' => 'Model\Comment'),
            // index: comments.date
        ),
    ),
);

You can see the Mongo documentation about indexes for further information.

Synchronizing

$articleRepository->ensureIndexes();
$authorRepository->ensureIndexes();

All at once through the mandango:

$mandango->ensureIndexes();
Fork me on GitHub