Doctrine Mongo更新$ pull查询无效

时间:2011-08-24 07:01:11

标签: php mongodb doctrine doctrine-odm

我正在尝试使用$pull更新查询删除对文档的引用(为了删除所述文档),但似乎没有任何内容发生。

我可以手动运行以下Mongo查询

db.collection.update({}, {
    $pull: {
        'field': {'$id': ObjectId("xxxxxxxx")}
    }
}, false, true)

工作正常。尝试在Doctrine的ODM中执行相同的操作既不会产生预期结果,也不会产生任何错误消息。这是我们到目前为止所拥有的

$id = new MongoId("xxxxxxxx");

$qb = $repo->createQueryBuilder();
$qb->update();
$qb->field('field')->pull(array('$id' => $id));
$qb->getQuery()->execute();

关于我做错了什么的提示?

2 个答案:

答案 0 :(得分:5)

啊,在拖曳了Doctrine代码之后终于找到了它......

必须将multi选项传递给MongoCollection::update()

$qb->getQuery(array('multiple' => true))->execute();

答案 1 :(得分:-3)

 $friend = Zend_Registry::get('doctrine')->getDocumentManager()->createQueryBuilder('App\document\Message')->update()->field('unread')->set(TRUE)->field('viewer_id')->equals(10001)-> getQuery(array('multiple' => true))->execute();