doctrine:mongodb:fixtures:load删除创建的索引

时间:2014-05-22 10:35:37

标签: mongodb indexing fixtures doctrine-mongodb

我正在使用Symfony 2和Doctrine Mongodb ODM,并试图创建一些与我已经创建的灯具一起工作的索引,并且我正在尝试加载

  php -f app/console doctrine:mongodb:fixtures:load

当我在文档上创建索引时,加载灯具失败并带有

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

ODM是否自己不生成索引?

1 个答案:

答案 0 :(得分:2)

经过一番研究后,我找到了解决这个问题的方法。

Doctrine不会自动创建索引,删除后必须自己执行此操作,使用命令

sf doctrine:mongodb:schema:create --index 

这并没有解决灯具的问题,因为它们会在执行代码之前删除所有内容。

但是这个问题也有解决方案!

在灯具文件的开头,添加一条为您重新生成索引的行。

    $dm = $this->container->get('doctrine.odm.mongodb.document_manager');
    $dm->getSchemaManager()->ensureIndexes();

doctrine_fixtures库上还有一个pull请求,以避免删除夹具加载时的索引,所以希望不再需要这个修复。

https://github.com/doctrine/data-fixtures/pull/118