Symfony mongodb中多个文档的原子更新
我与symfony2和doctrine mongodb odm一起参与一个项目。 我想使用querybuilder对多个文档执行原子更新,但我缺少一些东西:Symfony mongodb中多个文档的原子更新,symfony,doctrine-mongodb,Symfony,Doctrine Mongodb,我与symfony2和doctrine mongodb odm一起参与一个项目。 我想使用querybuilder对多个文档执行原子更新,但我缺少一些东西: $this->createQueryBuilder('MyBundle:MyDoc') ->update() ->field('isOpen')->set(false) ->field('isOpen')->equals(true) ->getQuery() ->execute(); 它可以
$this->createQueryBuilder('MyBundle:MyDoc')
->update()
->field('isOpen')->set(false)
->field('isOpen')->equals(true)
->getQuery()
->execute();
它可以工作,但只更新一个文档。我想我应该添加一个选项,如
array('multi' => true)
在某个地方,但我在文件里找不到任何关于这方面的东西
有人能帮我吗?我通过查看类定义找到了答案。查询生成器有一个名为multiple的方法来设置此选项
$this->createQueryBuilder('MyBundle:MyDoc')
->update()
->multiple(true)
->field('isOpen')->set(false)
->field('isOpen')->equals(true)
->getQuery()
->execute();
到目前为止,不推荐使用multiple()。您只需使用updateMany()即可
/**
* Set the "multiple" option for an update query.
*
* @param boolean $bool
* @return $this
*
* @deprecated Deprecated in version 1.4 - use updateOne or updateMany instead
*/
public function multiple($bool = true)
{
$this->query['multiple'] = (boolean) $bool;
return $this;
}
/**
* Change the query type to update multiple documents
*
* @return $this
*/
public function updateMany()
{
$this->query['type'] = Query::TYPE_UPDATE;
$this->query['multiple'] = true;
return $this;
}