1

我正在尝试使用更新查询删除对文档的引用(为了删除所述文档),$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();

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

4

2 回答 2

6

啊,翻遍了Doctrine代码终于找到了……

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

$qb->getQuery(array('multiple' => true))->execute();
于 2011-08-24T09:12:13.150 回答
-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();
于 2012-04-18T09:35:34.960 回答