条令:mongodb:fixture:load删除创建的索引

条令:mongodb:fixture:load删除创建的索引,mongodb,indexing,fixtures,doctrine-mongodb,Mongodb,Indexing,Fixtures,Doctrine Mongodb,我在Mongodb ODM中使用Symfony 2,并尝试创建一些索引,这些索引与我已经创建并尝试加载的fixture一起工作 php -f app/console doctrine:mongodb:fixtures:load 当我在文档上创建索引时,加载fixture失败 [Doctrine\ODM\MongoDB\MongoDBException]

我在Mongodb ODM中使用Symfony 2,并尝试创建一些索引,这些索引与我已经创建并尝试加载的fixture一起工作

  php -f app/console doctrine:mongodb:fixtures:load
当我在文档上创建索引时,加载fixture失败

  [Doctrine\ODM\MongoDB\MongoDBException]                                                                   
  Cannot execute unindexed queries on Updatemi\LibraryBundle\Document\UpdateTerm. Unindexed fields: update

ODM本身不生成索引吗

经过一些研究,我找到了解决这个问题的办法

条令不会自动创建索引,在删除索引后,您必须使用命令自己创建索引

sf doctrine:mongodb:schema:create --index 
这并不能解决装置的问题,因为它们在执行代码之前会删除所有内容。

但是这个问题也有解决办法

在fixtures文件的开头,添加一行,为您重新生成索引

    $dm = $this->container->get('doctrine.odm.mongodb.document_manager');
    $dm->getSchemaManager()->ensureIndexes();
还有一个pull请求在fixtures库上,以避免在fixture加载时删除索引,因此希望不再需要此修复