public function ensureDocumentIndexes($documentName, $timeout = null)
{
$class = $this->dm->getClassMetadata($documentName);
if ($class->isMappedSuperclass || $class->isEmbeddedDocument || $class->isQueryResultDocument) {
throw new \InvalidArgumentException('Cannot create document indexes for mapped super classes, embedded documents or query result documents.');
}
if ($indexes = $this->getDocumentIndexes($documentName)) {
$collection = $this->dm->getDocumentCollection($class->name);
foreach ($indexes as $index) {
$keys = $index['keys'];
$options = $index['options'];
if (!isset($options['safe']) && !isset($options['w'])) {
$options['w'] = 1;
}
if (isset($options['safe']) && !isset($options['w'])) {
$options['w'] = is_bool($options['safe']) ? (int) $options['safe'] : $options['safe'];
unset($options['safe']);
}
if (!isset($options['timeout']) && isset($timeout)) {
$options['timeout'] = $timeout;
}
$collection->ensureIndex($keys, $options);
}
}
}