我正在使用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是否自己不生成索引?
答案 0 :(得分:2)
经过一番研究后,我找到了解决这个问题的方法。
Doctrine不会自动创建索引,删除后必须自己执行此操作,使用命令
sf doctrine:mongodb:schema:create --index
这并没有解决灯具的问题,因为它们会在执行代码之前删除所有内容。
但是这个问题也有解决方案!
在灯具文件的开头,添加一条为您重新生成索引的行。
$dm = $this->container->get('doctrine.odm.mongodb.document_manager');
$dm->getSchemaManager()->ensureIndexes();
doctrine_fixtures库上还有一个pull请求,以避免删除夹具加载时的索引,所以希望不再需要这个修复。