Symfony mongodb中多个文档的原子更新

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(); 它可以

我与symfony2和doctrine mongodb odm一起参与一个项目。 我想使用querybuilder对多个文档执行原子更新,但我缺少一些东西:

$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;
}